我正在学习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,或者我在这里缺少什么?
有人能给我一个明确的解释吗?
非常感谢。
答案 0 :(得分:8)
根据C的优先规则,m<n>k
被解释为(m<n)>k
(您的其他示例遵循相同的形式)。 m<n
为真,因此计算结果为1.然后语句实际为1>k
,这是假的,因此为0.