c - C 新手 - 我正在努力解决这个问题

标签 c

我不明白结果如何:

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/

相关文章:

c - 如何在C中表示signed int?

c - 处理 block 写入 C 中的文件

c - 在 C 的 HashTable 中插入具有串联的方法

c - Xcode 仪器记录按钮按下时开始运行但立即停止(C 可执行文件)

c - 将多维数组传递给 C 中的函数 - Tic Tac To

c - 给array seat赋值很慢

在centos6上编译tor。 libevent 的问题

c++ - 在 C++ 中循环定义函数的参数

c++ - atoi 似乎不能正常工作

c - 在另一个发行版中运行 C 可执行文件