2201_75666318 2023-01-27 21:32 采纳率: 60%
浏览 64
已结题

c语言do while 循环

do while 循环没有循环体怎么办
int i =-1
do{}
while (i++);
Printf ("i =%d",i);

  • 写回答

4条回答 默认 最新

  • a5156520 2023-01-28 14:45
    关注

    下面是我的理解,供参考:

    do while 循环没有循环体应该是没有问题的,关键在于while循环的条件i++这个表达式的理解,do-while循环的结束条件是当i=0时,如果i不等于0,则一直执行空循环,具体分析如下:

    i为int类型,其值如果是-1,do-while循环,循环体do部分先执行一次空循环,while判断i的值,i=-1 , 可以继续执行空循环,判断完后i的值加1变为0;

    第二次,循环体do部分执行一次,while部分判断i的值为0,条件不满足,判断完i的值加1为1,最后退出循环打印i的值为1;

    当i的值为1时,同样循环体do部分先执行一次空循环,while判断i的值,i=1 , 可以继续执行空循环,判断完后i的值加1变为2;

    第二次,循环体do部分执行一次,while部分判断i的值为2,条件满足,判断完i的值加1为3;

    如此不断循环,直到i的值变为32位int类型最大值2147483647,执行i++后,发生溢出变为-2147483648, 但while条件仍然满足,继续执行空循环,然后while部分判断i的值,然后i的值继续+1;

    继续循环,直到i变为0, while部分判断i的值为0,不再继续循环,接着i的值+1变为1,最后打印i的值就变为1了。

    参考资料:
    计算机科学概论(第12版)- 第1章 数据存储 - 1.6 整数存储 - 1.6.1 二进制补码记数法 (第33页)


    #include <stdio.h>
    
    int main(void){
        
        int i =-1;
        do{}
        while (i++);  //https://blog.csdn.net/qq_43851311/article/details/127967231?spm=1001.2101.3001.6650.2&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-127967231-blog-89969504.pc_relevant_recovery_v2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EYuanLiJiHua%7EPosition-2-127967231-blog-89969504.pc_relevant_recovery_v2
    // https://baijiahao.baidu.com/s?id=1709264231108040368&wfr=spider&for=pc
        printf ("i =%d",i);
        
        return 0; 
    } 
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 2月6日
  • 已采纳回答 1月29日
  • 修改了问题 1月27日
  • 创建了问题 1月27日

悬赏问题

  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私