我遇到了一个竞争性的 C 问题,内容如下:
找到以下输出:
#include <stdio.h>
int main(void) {
int a=5, b=10, c=5;
int x;
x = a>b>c;
printf("%d\n", x);
return 0;
}
编译器响应 0。
我的解释是,这也许是从右到左评估的副作用。我的猜测是,首先b>c
被评估(假设它首先被推入堆栈,我在这里很困惑,因为我知道 > 的从左到右的关联性),它的评估结果为真。这个真实变量的值,它是一个大于 0 的数字(我们不知道),对其a > that_value
进行评估,产生结果。但是我可能错了!
关于如何评估输出的任何指针/见解都会很有用。谢谢。
编辑:我在一个非常旧的编译器中进行了测试,它给出了 1,这是我的错误,纠正了它。