第1个回答 2011-03-15
一、结果是:
a=8,b=1717986918
二、原因:
a=a+++b;//等价于a=(a++)+b;a结果为8。
printf("a=%d,b=%d\n", a,b); //b的值为5.100000,按整数输出即是1717986918。这个与浮点数表示形式有关,转换很复杂。
第2个回答 2011-03-15
a+++b等于a+b;a++
所以a=a+++b等于a=a+b;a++
第3个回答 2011-03-15
结果是:a=8,b=6
a.b的输出格式是十进制整数,对a的运算是一个附值表达式,考虑到运算顺序和优先级,a=a+(++b).其他的就不难理解了,相信你能看懂!记得和我交流啊…
第4个回答 2011-03-15
a=7,b=5
打印出整形数据
第5个回答 2011-03-15
a=8,b=1717986918
Press any key to continue
如果你的b是以浮点型形式(b=%f)输出的话,就会输出正确答案
a=8,b=5.1000
Press any key to continue
而因为++的优先级高于+,且运算是从左至右的,所以a=a+++b的运算是a先自加1,然后再与b相加,因为a是整型数据,所以运算结果再强制转换为整型,四舍五入得8。