一个很很简单的 c程序 大家块告诉我 我 憋的难受

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:02:17
刚才一个人提的问题
main()
{
int a=10;
while(a>8)
{

printf("%d%d\n",a--,--a);
}
printf("%d%d\n",--a,a--);

}
他说结果奇怪 然后我 给他说是不是 10 8 7 7 还没写完她就结束问题了 说 什么 printf是从右往左 如果这样的话就应该输出9 9 8 6啊 我忘了是 什么顺序了 手头也没c的环境 java是按10 8 7 7 输出的 各位帮我用c编译下 憋在心理难受马上下班了....
大家能不能一步一步告诉我是怎么算的吗? 我怎么也算不出第3个是6阿...

我用VS2005运行看过是98,68;
我想printf是从右往左运算,--a先减,但是并没输出,a--先输出了9,再减,然后--a是在全部的计算完了再输出..
然后退出while后,先是a--,先输出8,再减,--a就先减,然后全部计算完了,再输出了6;
运行环境不同,输出的时间不一样吧...但是a--和--a还是那个意思...

a退出while时是8,a--后是7,--a是先减后为6,再输出,当然是6了

结果为:
98
68

哈哈!是
9 9
6 8
啊!
、别难受了啦!实在不行,你就在电脑中运行啊!
在printf中,相同变量在一起,自右向左运行的。。。。。。

在TC2.0上运行的话,结果是
99
68
在VC6.0上运行,结果是
99
78
不同的编译器对这种复合的表达式的值操作不一样,没有必要理会这种结果吧,我觉得。没有价值。

不同的编译器对表达式的值操作不一样。
TC2.0上运行的
99
68
VC6.0上运行的
99
78
避免这种编译歧异最好分两步写。