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 初值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是先把原来的值加一了再用本回答被网友采纳
++i是先把原来的值加一了再用本回答被网友采纳
第2个回答 2011-12-23
后加加是先赋值在运算
前加加则是先运算后赋值
前加加则是先运算后赋值