printf中++的问题

i 初值8
printf("%d %d",i++,i++);__________ 结果 8 8
printf("%d %d",++i,++i);__________ 结果 10 9
请高手解释一下这是为什么

printf运算规则:
运算从右向左,输出控制符的赋值有左向右

i 初值8
printf("%d %d",i++,i++);
i++先处理表达式,后进行自增处理
所以在printf处理完毕后,才进行自增处理,所以输出的都是8

printf("%d %d",++i,++i);
++i先进行自增处理,后进行printf处理
由于printf运算从右向左,
所以先处理最右边的++i,得到9,
后处理前面的++i,得到10,
再进行printf处理,由于输出控制符的赋值由左向右,
所以10赋值给第一个%d,9赋值给第二个%d,
所以输出10 9追问

i++是后自增 那为什么
i++,printf("%d\n",i);的时候i还是先加了再输出
我的意思是i++的++什么时候运行,规则是什么

追答

i++是表达式完毕后,再进行自增处理
i++,printf("%d\n",i);
这样当然是i++先处理,再处理prntf,这都两个独立语句了,还有什么可疑问的?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-23
i++是先用i原来的值,然后再加一
++i是先把原来的值加一了再用本回答被网友采纳
第2个回答  2011-12-23
后加加是先赋值在运算
前加加则是先运算后赋值

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网