c - C 中的比较运算符返回什么?

标签 c operators output

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/

相关文章:

c++ - new-Operator 大幅增加了 Arduino 草图的大小——为什么?

c - 为什么 C 中运算符之间的关联性不同?

python - + 和 += 运算符不同?

formatting - 更改 esttab 中列的小数位而不是行

java - java中的二叉搜索树,中序遍历仅识别树中的单个数字

c++ - STL 映射输出迭代器查找值

c - 最大行长度程序在 c 中打印不可读的字符

c - UNIX SOCKET - 可以直接写入套接字的内存吗?

ruby - ruby 中的 !=~ 比较运算符是什么?

c - 在 Linux 中监视上下文切换