int main()
{
int x=35;
printf("%d\n%d\n%d\n",x==35,x=50,x>35);
return 0;
}
在上面的主函数中,输出结果为 0 50 0。为什么即使当 x
的值等于 35 时,比较运算符也会产生 0 的输出。
我对 x>35
生成的输出也有点困惑,因为编译时 x
的值已更新为 50,为什么会这样它产生的输出为 0 而不是 1。
最佳答案
x = 50 是赋值,显然,参数以相反的顺序计算:
so x > 35 首先被评估为 false (0),然后 x=50 作为赋值,其评估结果为 50 作为副作用,然后 x == 35 再次为 false (0)。
(事实上,就像其他答案所说,这个执行顺序没有指定。
关于c - C 中的比较运算符返回什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32421880/