鱼C论坛

 找回密码
 立即注册
查看: 806|回复: 7

[已解决]while出毛病了?太抓狂了,T_T~~~

[复制链接]
发表于 2022-3-23 20:23:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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。没了,。。。。。
太心累了。
最佳答案
2022-3-23 20:50:20
本帖最后由 jhq999 于 2022-3-23 20:51 编辑

while (n--);
while (n--)
{
        printf("%d", a++*2);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-23 20:33:19 | 显示全部楼层
没问题啊,正常退出while 难道你死循环了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-23 20:50:20 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jhq999 于 2022-3-23 20:51 编辑

while (n--);
while (n--)
{
        printf("%d", a++*2);
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-23 21:09:44 | 显示全部楼层
这个while(n--)没问题吗,,,,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-23 23:11:18 | 显示全部楼层
你这上个问题也是 while循环后加 ;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-3-24 15:19:01 | 显示全部楼层
ba21 发表于 2022-3-23 20:33
没问题啊,正常退出while 难道你死循环了?

我的while加分号了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-24 15:19:47 | 显示全部楼层
大马强 发表于 2022-3-23 23:11
你这上个问题也是 while循环后加 ;

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-24 15:20:23 | 显示全部楼层
a++*2其实就是考你操作符的结合律,由于++得优先级高于*(乘号),所以先计算a++。
而a++又是有“延迟”的,它在当前语句中不对a的值加1,而是当前语句执行完之后,a的值才加1. 所以如果a一开始为 0,那么a++的值还是零。
不过printf("%d",a++*2);执行完之后,a的值为1了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-18 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表