问个简单的关于自加的问题!
main()
{
int k;
k=11;
printf("%d %d\n",++k,k);
printf("%d",k);
}
这个的运行结果是12 11 12
为什么printf("%d",k); 这个的结果会是12,不该是11么?
main()
{
int k;
k=11;
printf("%d %d\n",k,++k);
printf("%d",k);
}
如果在自加换个位置,结果就变成了,12 12 12.
那个高手可以告诉我啊?
我是自学的
----------------解决方案--------------------------------------------------------
结果不确定,完全由编译器来确定
by 雨中飞燕 QQ:78803110 QQ讨论群:5305909
[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
----------------解决方案--------------------------------------------------------
哦,那我下次用个别的来试试,谢谢你了
----------------解决方案--------------------------------------------------------
printf();应该是从右往左扫描,求解表达式的值.
printf("%d %d\n",++k,k);//先求k=11,才求++k=12,此时k=12,所以下面也输出12
printf("%d",k);
printf("%d %d\n",k,++k);//同样的道理,++k=12使得k=12,所以是12 12 12
printf("%d",k);
----------------解决方案--------------------------------------------------------
最好不要写这种代码~~~~~~~~~
by 雨中飞燕 QQ:78803110 QQ讨论群:5305909
[url=http://bbs.bc-cn.net/viewthread.php?tid=163571]请大家不要用TC来学习C语言,点击此处查看原因[/url]
C/C++算法习题(OnlineJudge):[url]http://yzfy.org/[/url]
----------------解决方案--------------------------------------------------------
哦,谢谢了知道了,写的时候忘记了操作符了!汗!
----------------解决方案--------------------------------------------------------
以前看一些书上介绍是从后开始计算,我怀疑那是说TC中的,换了编译器会不同,赞同
----------------解决方案--------------------------------------------------------