丘陵山地 发表于 2022-3-23 20:23:54

while出毛病了?太抓狂了,T_T~~~

#include <stdio.h>
int main()
{

        int a = 0, n;
        printf("\n input n: ");
        scanf_s("%d", &n);
        while (n--);
        {
                printf("%d", a++*2);
        }
       
        return 0;
}


我按f10调试,一步一步来,我输入8后,按一次f10,n就-1,但是黄色箭头就在while那里不动,按f10,n又-1.直到-1,然后a=1。没了,。。。。。
太心累了。
{:10_255:}

ba21 发表于 2022-3-23 20:33:19

没问题啊,正常退出while 难道你死循环了?

jhq999 发表于 2022-3-23 20:50:20

本帖最后由 jhq999 于 2022-3-23 20:51 编辑

while (n--);
while (n--)
{
        printf("%d", a++*2);
}

Tep 发表于 2022-3-23 21:09:44

这个while(n--)没问题吗,,,,

大马强 发表于 2022-3-23 23:11:18

你这上个问题也是 while循环后加 ;

丘陵山地 发表于 2022-3-24 15:19:01

ba21 发表于 2022-3-23 20:33
没问题啊,正常退出while 难道你死循环了?

我的while加分号了{:10_262:}

丘陵山地 发表于 2022-3-24 15:19:47

大马强 发表于 2022-3-23 23:11
你这上个问题也是 while循环后加 ;

{:10_278:}

丘陵山地 发表于 2022-3-24 15:20:23

a++*2其实就是考你操作符的结合律,由于++得优先级高于*(乘号),所以先计算a++。
而a++又是有“延迟”的,它在当前语句中不对a的值加1,而是当前语句执行完之后,a的值才加1. 所以如果a一开始为 0,那么a++的值还是零。
不过printf("%d",a++*2);执行完之后,a的值为1了。
页: [1]
查看完整版本: while出毛病了?太抓狂了,T_T~~~