【发布时间】:2016-02-02 22:25:58
【问题描述】:
请解释一下这段代码的结果。
//编码一个 当我在笔记本电脑上运行此代码时,y 的值为 4。我认为,y 的逻辑值应该是 5,因为通过执行 x++ 它应该返回 2 而不会增加,因为它是后增量,然后当我们添加 x 现在包含一个递增的值,即 3。所以 2+3 是 5,据我说。但根据我的 turbo c++ 3.0 答案是 4。
#include <stdio.h>
void main() {
int x = 2,y;
**int y = x++ + x;** // ans 4
printf("y is :%d", y);
}
// 代码 B 当我运行这段代码时,答案是 6。这里 ++x 中的 turbo c++ 3.0 获取了一个递增的 x++ 值,这与上面提到的代码相反。从逻辑上讲,这里的答案是正确的,但在上面的代码中却不是。
#include <stdio.h>
void main() {
int x = 2,y;
**int y = x++ + ++x;** //and 6
printf("y is :%d", y);
}
【问题讨论】:
-
你运行它并发现了吗?你是用调试器运行的吗?什么让你感到困惑?
-
老师布置这个练习的重点是让你通过学习运算符顺序和优先级的规则自己弄清楚。让我们向您解释它会破坏目的。
-
@M.M:关闭原因包含问题中缺少的其他条件。
-
我发布了一个带有详细解释的新代码。请告诉我两者的区别。谢谢大家。我希望这段代码能帮助你们理解我真正想要的是什么。
标签: c increment operator-precedence post-increment pre-increment