我不明白结果如何:
2
2
2
这是我的代码:
#include <stdio.h>
int main()
{
int a = 1, b = 1, x = 0, y = 0;
double w;
x = 1 + a++;
printf("x = %d\n", x);
printf("a = %d\n", a);
y = ++b;
printf("y = %d\n", y);
printf("b = %d\n", b);
}
好吧,我理解了后缀和前缀,但我仍然不明白为什么 a 和 b 是 2 而不是 1 。 他们没有在任何地方被拯救 所以当你说 x=1+a++ 和 y=++b 时, b 变为 2 并保存在 y 中。当没有保存在任何地方(例如 b=++b )时,b 如何保持为 2 。
抱歉,我不确定你们是否遵循我的想法。
最佳答案
您必须了解增量运算符的工作原理。
您有两个操作:
- X++ => 返回 X 的值,然后将其加 1。
- ++X => 将 X 加 1 然后返回。
在您的情况下,有问题的行在这里:x = 1 + a++;
这翻译成:
返回 a 的值 (1) 并将其递增(a 变为 2)。
将 x 的值设置为 1 + a (1) 返回的值(x 变为 2)
希望这有帮助。
关于c - C 新手 - 我正在努力解决这个问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32938415/