在c语言中int a=5;printf("%d %d",++a,a++);答案是6 和5,为什么不是6和6,希望大家能帮我解决一下。
3个回答
展开全部
printf()在对逗号后面的数据处理时是按照从右往左的顺序的,即先执行a++,再执行++a,这样,输出的第二个数就是5了,而在执行++a时,c语言中并不认为这是第二次使用a(这段执行过程最好看汇编),所以执行的其实是5+1,所以输出的第二个数是6
其实你可以试一下printf("%d %d",++a,++a);,若初始值为5,输出结果应该为7和6
至于梅竹_菊兰所说的同时执行,这是不可能的,任何程序都是不可能同时执行。所谓的同时执行也只是把时间切成片段,让每一部分在那个时间片段里分别执行一下,这样看起来就像是在同时执行一样。
其实你可以试一下printf("%d %d",++a,++a);,若初始值为5,输出结果应该为7和6
至于梅竹_菊兰所说的同时执行,这是不可能的,任何程序都是不可能同时执行。所谓的同时执行也只是把时间切成片段,让每一部分在那个时间片段里分别执行一下,这样看起来就像是在同时执行一样。
展开全部
这是编译器的定义问题,不同的编译器有不同的原理,有的编译器结构是6和5,另外的编译器结果可能是6和6。
结果为6和5的编译器可能定义了在printf语句中++a和a++是同时进行的,都对原始的a进行处理。
结果为6和5的编译器可能定义了在printf语句中++a和a++是同时进行的,都对原始的a进行处理。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
++a是先运行++ 后显示当前a
a++是先运行了显示当前a 在运行了++运算
a++是先运行了显示当前a 在运行了++运算
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询