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

发布于 2024-10-19 10:00:25 字数 406 浏览 5 评论 0 原文

我正在学习 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,或者我在这里错过了什么?

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

多谢。

I am learning C language and I have some question as follows (sorry if these are silly ones)

I am using Dev-C++ 4.9.9.2 to run some examples:

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

As the book says "A zero value stands for false and any other value stands for true."
So, why the statement (3) prints 0 (false). I thought it should be 1, or what am i missing here?

Can anyone give me a clear explanation, please?

Thanks a lot.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

月光色 2024-10-26 10:00:25

根据 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 actually 1>k which is false, thus 0.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文