下面这段程序,打印出来的数字应该是什么?
#include "stdio.h"
int a=1;
int main()
{
int b=1;
printf("%d %d\n\r",a++,++a);
printf("%d %d\n\r",b++,++b);
}
a和b分别是全局变量和局部变量,如论printf打印的时候是从左到右运算,还是从右到左运算,两行结果都应该一致才对,但是真正的结果却是下图(codeblocks编程环境)

我们把++a和a++的位置换一下,改为下面的程序
#include "stdio.h"
int a=1;
int main()
{
int b=1;
printf("%d %d\n\r",++a,a++);
printf("%d %d\n\r",++b,b++);
}
结果就变为了:

所以,在函数调用的时候,不要使用自加自减运算符,因为你不知道会得到什么样的结果!
博客探讨了函数调用时自加自减运算符的情况。通过代码示例,展示了全局变量和局部变量在使用自加自减运算符时,不同运算顺序下打印结果不一致的现象。最后得出结论,函数调用时不要使用自加自减运算符,以免结果不可控。

被折叠的 条评论
为什么被折叠?



