24小时热门版块排行榜    

CyRhmU.jpeg
南方科技大学公共卫生及应急管理学院2026级博士研究生招生报考通知(长期有效)
查看: 647  |  回复: 5
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

joansky

金虫 (小有名气)

[求助] 请教一个while loop的问题

下面两个while loop的小程序,第二个比第一个多了一行,在跳出while loop后为什么会output n=4的值?

main ( ) {
        int n = 0;
       
        while (n++<3)  
                printf("n is %d\n", n);               
       
        printf("That's all this program does.\n";
}

OUTPUT:
n is 1
n is 2
n is 3
That's all this program does.

----------------------------------------------------------------------------------------

main ( ) {
        int n = 0;
       
        while (n++<3)  
                printf("n is %d\n", n);               
        printf("n is %d\n", n);
        printf("That's all this program does.\n";
}

OUTPUT:
n is 1
n is 2
n is 3
n is 4
That's all this program does.
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mengxc

木虫 (著名写手)

【答案】应助回帖

★ ★
joansky(金币+5): 2011-06-07 11:17:14
ben_ladeng(金币+2): 欢迎常来参与讨论 2011-06-07 13:10:49
引用回帖:
Originally posted by joansky at 2011-06-07 09:46:04:
我的理解是,n++是先用n的值再+1。n=3,回到while loop后,应该先和3比较,如果满足,就++,如果不满足就不应该++了,对不对?

“n++是先用n的值再+1。n=3,回到while loop后,应该先和3比较"这没错
但是后面的++是不管满足不满足都要执行的。n++就是先取n的值,再加1
4楼2011-06-07 09:55:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 6 个回答

mengxc

木虫 (著名写手)

【答案】应助回帖

★ ★
jjdg(金币+2): 感谢参与 2011-06-07 15:09:01
第二个printf("n is %d\n", n);已经是在WHILE循环外边了,循环在n=3输出后,又n++,变成4,不满足n++<3,跳出循环
2楼2011-06-07 08:38:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

joansky

金虫 (小有名气)


jjdg(金币+1): 感谢参与 2011-06-07 15:09:12
引用回帖:
Originally posted by mengxc at 2011-06-07 08:38:30:
第二个printf("n is %d\n", n);已经是在WHILE循环外边了,循环在n=3输出后,又n++,变成4,不满足n++<3,跳出循环

我的理解是,n++是先用n的值再+1。n=3,回到while loop后,应该先和3比较,如果满足,就++,如果不满足就不应该++了,对不对?
3楼2011-06-07 09:46:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

joansky

金虫 (小有名气)

引用回帖:
Originally posted by mengxc at 2011-06-07 09:55:12:
“n++是先用n的值再+1。n=3,回到while loop后,应该先和3比较"这没错
但是后面的++是不管满足不满足都要执行的。n++就是先取n的值,再加1

谢谢你
5楼2011-06-07 11:16:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见