关于 C 中关系运算符的问题?
我正在学习 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
正如书中所说“零值代表 false,任何其他值代表为真。” 那么,为什么语句 (3) 打印 0(假)。我认为它应该是 1,或者我在这里错过了什么?
谁能给我一个明确的解释吗?
多谢。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
根据 C 的优先级规则,
mk
被解释为(mk
(您的其他示例遵循相同的形式)。m 为 true,因此计算结果为 1。那么该语句实际上是
1>k
,它为 false,因此为 0。According to C's precedence rules,
m<n>k
gets interpreted as(m<n)>k
(your other examples follow the same form).m<n
is true, so that evaluates to 1. Then the statement is actually1>k
which is false, thus 0.