尤达条件和整数推广

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

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

或应该是:

 if (-1 == i) 

在任何情况下,任何一种情况都不能与-1LL (其中int64_t long long )相比吗?

无论你把它放在右手边还是左手边都没关系; ==运算符是完全对称的。

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

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

所以-1转换为int64_t-1LL没有区别。