printf中++的问题
i初值8printf("%d%d",i++,i++);__________结果88printf("%d%d",++i,++i);__________结果109请高手解释一...
i 初值8
printf("%d %d",i++,i++);__________ 结果 8 8
printf("%d %d",++i,++i);__________ 结果 10 9
请高手解释一下这是为什么 展开
printf("%d %d",i++,i++);__________ 结果 8 8
printf("%d %d",++i,++i);__________ 结果 10 9
请高手解释一下这是为什么 展开
3个回答
推荐于2017-09-12
展开全部
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,这都两个独立语句了,还有什么可疑问的?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询