int i=3;printf(“%d,%d\n”,i,i++); 此语句的运行结果 最好讲讲

[复制链接]
查看11 | 回复5 | 2013-7-12 19:28:43 | 显示全部楼层 |阅读模式
printf("%d,%d,%d",i,i++,i++);输出3,3,3正确。有两个原因供参考:i++是后++,要等输出结束后才执行加1运算;即便是前++,如printf("%d,%d,%d",i,++i,++i);,输出也不会是3,4,5,而应该是5,5,4。因为最后一个i变成4后就压栈了,中间一个在4基础上+1自然是5,最前面的一个i值未变。当然这还与编译器有点关系,如果某编译器要等把所有列表项计算完再压栈,那这里输出就应该是5,5,5了!按照这些规则,printf("%d,%d,%d",i+8,i+=5...
回复

使用道具 举报

千问 | 2013-7-12 19:28:43 | 显示全部楼层
continue语句是直接进入下一次循环,从前面的if语句看,如果i为3的话,就执行continue而忽略掉printf语句.所以作用是打印1到4的数字除了3...
回复

使用道具 举报

千问 | 2013-7-12 19:28:43 | 显示全部楼层
结果为3,3,一个3就是i本身,第二个三是(i++)的值,(i++)的值是i本身但是最后的i变了i加一变成了4,...
回复

使用道具 举报

千问 | 2013-7-12 19:28:43 | 显示全部楼层
4 3第一个i 是 ++之后的值 第二个i 是没++之前的值 因为是i++所有是先用后加你要问我结果为什么是这样我也不知道 编译器这么决定的 我用的linux gcc...
回复

使用道具 举报

千问 | 2013-7-12 19:28:43 | 显示全部楼层
3,3,printf执行完后i=4,i++表示引用后 i+1,如果++i表示引用前先加1...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行