关于自增自减问题请教!!
#include <stdio.h>
int main()
{
int i=3;
printf("%d\n",++i);
printf("%d\n",--i);
printf("%d\n",i--);
printf("%d\n",i++);
printf("%d\t%d\t%d\t%d\n",++i,--i,i--,i++);
getchar();
return 0;
}
输出结果是
4
3
3
2
3 2 4 3
[解决办法]
看置顶的帖子..日经贴!
[解决办法]
[解决办法]
这个我印象是"printf("%d\t%d\t%d\t%d\n",++i,--i,i--,i++);"这句程序计算并不是按照你写的顺序计算的,"++i,--i,i--,i++"在计算时,程序并不一定按照你写的顺序计算的,所以结果与你想的不一样。还有我用vc6.0得到的结果是3 2 3 3,印象中是编译器对这种写法执行方法不同,不同的编译器选择的顺序不同。不过,这个还需要高手来解释,我不知道有没有记错,呵呵~~
[解决办法]
我查了一下,C标准并没有规定函数求值是自左至右还是自右向左,但每个编译程序都规定了自己的顺序。Turbo C ,Visual C++ 6.0是按自右至左的顺序求值的,而且这两种对于i++,自加是在执行完printf语句后才会加一,而不是求出右面一项后i值立即加一。所以写程序要具有通用性,避免二义性。你的就是按照自右向左求值的,但好像是求出右面一项后i值立刻改变的,这点你可以改变一下程序测试一下。