在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6和6,希望大家能帮我解决一下。

 我来答
子爵先生
2010-11-13 · TA获得超过1673个赞
知道小有建树答主
回答量:430
采纳率:0%
帮助的人:564万
展开全部
printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6
其实你可以试一下printf("%d %d",++a,++a);,若初始值为5,输出结果应该为7和6

至于梅竹_菊兰所说的同时执行,这是不可能的,任何程序都是不可能同时执行。所谓的同时执行也只是把时间切成片段,让每一部分在那个时间片段里分别执行一下,这样看起来就像是在同时执行一样。
梅竹_菊兰
2010-11-13 · 超过14用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:0
展开全部
这是编译器的定义问题,不同的编译器有不同的原理,有的编译器结构是6和5,另外的编译器结果可能是6和6。
结果为6和5的编译器可能定义了在printf语句中++a和a++是同时进行的,都对原始的a进行处理。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
onlyfired
2010-11-13
知道答主
回答量:6
采纳率:0%
帮助的人:9735
展开全部
++a是先运行++ 后显示当前a
a++是先运行了显示当前a 在运行了++运算
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式