注册 登录
编程论坛 C语言论坛

这种程序会停止吗

小晓鸭呀 发布于 2020-04-04 23:45, 1604 次点击
若k值为50的话

#include <stdio.h>
int main(){
    int k;
    scanf("%d", &k);
    int i=100;
    while(i > k){
        printf("%d ", i);
        i++;
    }
    return 0;
}
4 回复
#2
叶纤2020-04-05 00:39
当k<100时,i>k是恒定的,换一句话说,是死循环
#3
lin51616782020-04-05 02:20
运行窗口 标题栏有一个x 点一下就停了

这个循环最终会导致有符号数溢出
属于未定义行为
结果没意义
可以是变成最小值 退出循环
也可以死循环
#4
hbccc2020-04-05 07:34
应该是k++呀
#5
纯蓝之刃2020-04-05 07:36
当i累加到0X7FFFFFF的时候,下一次累加会导致数值溢出,可能是小于k的值也可能是大于k的值,如果小于k就循环退出,如果大于k就继续循环。因为有符号数据溢出为未定义行为,全看编译器如何处理。
如果你将i定义为unsigned int型,当i累加到0xFFFFFFFF时,下一次累加导致数值溢出,溢出后i的值一定为0,如果k的值大于0,则退出循环。
1