C语言中,求a++ + ++a + a++ + ++a的值,a=10,请高手讲解一下具体运算过程,谢谢!

[复制链接]
查看11 | 回复8 | 2007-5-10 13:25:08 | 显示全部楼层 |阅读模式
10 + 14 + 10 + 14=48
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
结果就是48,不同的编译工具对符号的优先运算不同 ,这就导致结果不同,非常同意6楼的意见,这么写的人,要么脑子病的不轻,要么他是个极BT的人民教师.
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
这位同学好言相劝一句:人生不是浪费在这些无聊的问题上的。毫无意义的问题,有空多看看其他语法吧。
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
a=10,++a=11,a++ + ++a=21;a=11(是由于++a,不是a++ )a++ + ++a +a++=21+11=33;a=11(上步第二个a++不改变此时a的值),++a=12,a++ + ++a + a++ + ++a=33+12=45;运算顺序是从左到右.a++是整个式子计算完了才加一的.++a是计算前就加一的.
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
这种东西的运算结果与编译器的优化有关VC6:45VC8:48c语言采取能多则多的原则a++ + ++a + a++ + ++a而这个式子编译器的理解应该是((a++)++)+a + ((a++)++)+aa=10a++ a=11再++ a=1212+12=24 a=12a++ ++ a=1424+14+14=52
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
没有具体过程,这个是定义,自己看书:(a++)+(++a)+(a++)+(++a)=10+12+12+14=48
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
a++=11 此时a=11了` 再++a a=12了` 再a++=13了 再++a a=1411+12+13+14=50
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
a++ + ++a + a++ + ++a10+12+ 12+ 14 =48第一个 a++ 是先用再加 所以是 10 而此时a=11;第二个 ++a 是先加再用所以是 12 而此时a=12;下面同理可推!!
回复

使用道具 举报

千问 | 2007-5-10 13:25:08 | 显示全部楼层
不同的编译工具对符号的优先运算不同所以可能导致输出结果的不同a++ + ++a + a++ + ++a这样写程序的脑子肯定病得不轻
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行