13

将大于 的类型int与整数常量进行比较时,我应该将常量放在左侧还是右侧,以确保执行正确的比较?

int64_t i = some_val;
if (i == -1)

或者应该是:

if (-1 == i)

是否存在任何一种情况与比较-1LL(where int64_tis long long)不同的情况?

4

1 回答 1

11

放在右手边还是左手边都没有关系;==算子是完全对称的。

如果运算==符的两个操作数都具有算术类型,如本例所示,则应用“通常的算术转换”(C99 §6.5.9)。在这种情况下,适用的规则是:

如果两个操作数都具有有符号整数类型或都具有无符号整数类型,则具有较小整数转换等级的类型的操作数将转换为具有较大等级的操作数的类型。(C99 §6.3.1.8)

所以 -1 被转换为int64_t. -1LL没什么区别。

于 2010-09-21T10:38:28.853 回答