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,这都两个独立语句了,还有什么可疑问的?
威孚半导体技术
2024-08-19 广告
2024-08-19 广告
威孚(苏州)半导体技术有限公司是一家专注生产、研发、销售晶圆传输设备整机模块(EFEM/SORTER)及核心零部件的高科技半导体公司。公司核心团队均拥有多年半导体行业从业经验,其中技术团队成员博士、硕士学历占比80%以上,依托丰富的软件底层...
点击进入详情页
本回答由威孚半导体技术提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询