当比较大于int
的类型和整数常量时,我应该将常量放在左侧还是右侧以确保执行正确的比较?
int64_t i = some_val;
if (i == -1)
或应该是:
if (-1 == i)
在任何情况下,这两种情况与-1LL
(其中int64_t
是long long
)的比较都不相同吗?
答案 0 :(得分:11)
无论是放在右手边还是左手边都没关系; ==
运算符是完全对称的。
如果==
运算符的两个操作数都具有算术类型(如本例所示),则应用“通常的算术转换”(C99§6.5.9)。在这种情况下,适用的规则是:
如果两个操作数都有有符号整数类型或两者都有无符号 整数类型,具有较小整数转换等级类型的操作数是 转换为具有更高等级的操作数的类型。 (C99§6.3.1.8)
所以-1转换为int64_t
。 -1LL
没有任何区别。