C++在C中意味着什么?

kry*_*cte 0 c

我试图理解C编程的基础知识,我是C的新手,我无法理解为什么我的程序的输出是:

1 2
1 1
Run Code Online (Sandbox Code Playgroud)

很好,我理解第一个输出,printf()但我似乎没有得到第二个背后的逻辑printf().为什么不能显示1 2呢?

#include <stdio.h>

int main()
{
    int a = 1, b = 2;

    printf("%d %d\n", a, b);
    printf("%d %d\n", a, a++);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Joh*_*web 5

a++增量 a.也就是说,在a返回之前复制值,然后递增.

正如我在评论中提到的,我得到了不同的结果,原因我在下面解释.

如果你添加printf("%d\n", a);,在你上次打电话给printf()你之后会看到2因为a现在已经增加了.

如果你想看1 2,你可以预先增量 a(增加它然后使用它),但你需要引入一个序列点,以保证工作,因为标准未指定函数参数的评估顺序你想要使用a两次:

printf("%d ", a);
printf("%d\n", ++a);
Run Code Online (Sandbox Code Playgroud)

看它运行!