Mat*_*ner 13 c integer-promotion
当比较大于int和整数常数的类型时,我应该将常量放在左侧还是右侧以确保执行正确的比较?
int64_t i = some_val;
if (i == -1)
Run Code Online (Sandbox Code Playgroud)
或应该是:
if (-1 == i)
Run Code Online (Sandbox Code Playgroud)
是否有在其中任一种情况下是不相同的与比较任何情况下-1LL(其中,int64_t是long long)?
caf*_*caf 11
无论你把它放在右手边还是左手边都没关系; 的==操作者是完全对称的.
如果运算==符的两个操作数都具有算术类型(如本例所示),则应用"通常的算术转换"(C99§6.5.9).在这种情况下,适用的规则是:
如果两个操作数都具有有符号整数类型或两者都具有无符号整数类型,则具有较小整数转换等级类型的操作数将转换为具有更高等级的操作数的类型.(C99§6.3.1.8)
所以-1转换为int64_t. -1LL没有区别.