程序1:a=2;b=(++a)+(a++)+( a--)+(--a);printf("d",b);程序2:a=2;printf("d",(++a)+(a++)+( a--)+(--a));两程序的运行结果分别为8,12。请问为何??
因为两个运算方向不同.程序1是从左到右.程序2是从右到左运算.
这种傻冒的程序,没有可移植性,不能这么写你每换一个编译器,都可能得到不同的答案,这是由于不同的编译器所理解的顺利点不一样,或者说这几个句语,顺序点就是混乱的
支持》
PS:
++ -- 大家不要乱用!用的那么复杂干嘛??优秀的程序员不会弄的代码自己都看不懂!
好的编译器看到这种代码应该给个警告甚至是错误。
不太喜欢说这样的题目.第一个,按照理论来说,是从左到右的运算顺序,但事实上有的编译器还是会先处理所有的a++,--,使得变成一个统一的数.下面的雷同.从右到左运算.