关于C中关系运算符的问题?

时间:2011-02-25 02:14:01

标签: c relational

我正在学习C语言,我有一些问题如下(对不起,如果这些是愚蠢的)

我使用Dev-C ++ 4.9.9.2来运行一些例子:

int m=3, n=4, k = 2;
(1) printf("%d", k<m<n); => this one prints 1
(2) printf("%d", k>m>n); => this one prints 0
(3) printf("%d", m<n>k); => this one prints 0

正如书中所说:“零值代表虚假,任何其他价值代表真实。” 那么,为什么语句(3)打印0(假)。我认为它应该是1,或者我在这里缺少什么?

有人能给我一个明确的解释吗?

非常感谢。

1 个答案:

答案 0 :(得分:8)

根据C的优先规则,m<n>k被解释为(m<n)>k(您的其他示例遵循相同的形式)。 m<n为真,因此计算结果为1.然后语句实际为1>k,这是假的,因此为0.