我来到一个竞争力的薪资问题肚里如下:A> B> 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,这是我的错误,纠正它。
负面选民,请解释你的否定投票的原因?所以我可以纠正它! – 2014-10-09 09:52:05
我没有得到downvote,因为这看起来很奇怪和有趣。但是,“一些编译器”?什么编译器给出什么输出? – user2504380 2014-10-09 09:53:14
我怀疑你会发现一个编译器可以回答0以外的任何内容。语言规范一直清楚'>'运算符从左到右的相关性。 – Jens 2014-10-09 09:55:12