
5.33题答案写的是C,为什么是C啊答案错了嘛
后来我算了一下A也是死循环
选项C应该是数据溢出后,变为负数退出循环的。
测试如下:
参考链接:
C语言数据类型_c语言数据类型范围-CSDN博客
文章浏览阅读1.2k次,点赞12次,收藏19次。取值范围:-2,147,483,648到2,147,483,647(如果使用有符号类型),或0到4,294,967,295(如果使用无符号类型)取值范围:-9,223,372,036,854,775,808到9,223,372,036,854,775,807(如果使用有符号类型)取值范围:-2,147,483,648到2,147,483,647(如果使用有符号类型,且大小为4字节),或更大的范围如果大小为8字节。取值范围:0到4,294,967,295(如果大小为4字节),或更大的范围如果大小为8字节。_c语言数据类型范围
https://blog.csdn.net/m0_59480213/article/details/140473639
https://zhuanlan.zhihu.com/p/701183152
#include <stdio.h>
int main(void){
// 选项A,i%100最大为99,再加1最大为100,永远不可能大于100,所以是死循环
// int i=100;
// while(1){
// i=i%100+1;
// //printf("i=%d\n",i);
// if(i>100) break;
//
// }
// https://zhuanlan.zhihu.com/p/701183152
// 选项B,死循环的一种方式
// for(;;);
// https://blog.csdn.net/m0_59480213/article/details/140473639
// 选项C,这里k不断自增,由0变为int的最大值2,147,483,647后,再自增1,就溢出了
// 然后就变为负整数-2,147,483,648 , do-while循环就结束了
int k=0;
do{
++k;
}while(k>=0);
printf("k=%d\n",k);
// 选项D,循环条件为变量s的真假值,因为非0值为真
// while循环的条件永远满足,所以也是死循环
// int s=36;
// while(s);
// --s;
return 0;
}
