后缀(或后缀)U, UL, ULL 表示负常量

Postfix (or suffix) U, UL, ULL for negative constants

本文关键字:后缀 表示 常量 ULL UL      更新时间:2023-10-16

C++中使用无符号后缀作为负常量是好习惯吗?

例如,使用安全吗,

foo(-1ull);

而不是

foo(unsigned long long(-1));

它并没有真正用于"负常数"。C++中的常量(文字)始终为非负数。所以,你在这里看到的是文字1ull,前面有一元-运算符。这意味着第一个变体的确切语义可以直接表示为

-(unsigned long long) 1

但不是

(unsigned long long) -1

(尽管两者最终产生相同的结果)。

顺便说一句,您的第二个变体,如所写,在语法上不正确。"多字"类型名称不能用于函数样式转换。 usigned(-1)是合法的,但unsigned int(-1)不是。 unsigned long long(-1)也是非法的。

但是,让我们假设我理解您试图通过第二个变体说的话。在该假设下,两种变体都做同样的事情,因此您可以根据个人偏好或编码标准使用其中一种。不过第一个显然更短。