do while 循环没有循环体怎么办
int i =-1
do{}
while (i++);
Printf ("i =%d",i);
c语言do while 循环
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
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页)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_v2https://baijiahao.baidu.com/s?id=1709264231108040368&wfr=spider&for=pc#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; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 1无用
悬赏问题
- ¥60 求直线方程 使平面上n个点在直线同侧并且距离总和最小
- ¥50 java算法,给定试题的难度数量(简单,普通,困难),和试题类型数量(单选,多选,判断),以及题库中各种类型的题有多少道,求能否随机抽题。
- ¥50 rk3588板端推理
- ¥250 opencv怎么去掉 数字0中间的斜杠。
- ¥15 这种情况的伯德图和奈奎斯特曲线怎么分析?
- ¥250 paddleocr带斜线的0很容易识别成9
- ¥15 电子档案元素采集(tiff及PDF扫描图片)
- ¥15 flink-sql-connector-rabbitmq使用
- ¥15 zynq7015,PCIE读写延时偏大
- ¥15 使用spss做psm(倾向性评分匹配)遇到问题