gpt4 book ai didi

c - Yoda 条件和整数提升

转载 作者:太空狗 更新时间:2023-10-29 16:38:41 25 4
gpt4 key购买 nike

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

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

或者应该是:

if (-1 == i)

是否存在两种情况与 -1LL(其中 int64_tlong long)比较不同的情况?

最佳答案

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

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

If both operands have signed integer types or both have unsigned integer types, the operand with the type of lesser integer conversion rank is converted to the type of the operand with greater rank. (C99 §6.3.1.8)

因此 -1 被转换为 int64_t-1LL 没有区别。

关于c - Yoda 条件和整数提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3757941/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com