wangshuo 发表于 2019-1-23 20:27:22

求助,为什么while括号中不是x>1,而是x>0

本帖最后由 wangshuo 于 2019-1-23 20:30 编辑

#include<stdio.h>
int main()
{
        int x;
        int n=0;
        scanf("%d",&x);
        n++;
        x/=10;
        while(x>0)
        {
                n++;
                x/=10;
        }
        printf("%d",n);
}
这是一个简单的C语言判断几位数的程序,但是本人感觉括号中应该是x大于1,因为如果是x大于0的话,x一直除以10,永远是一个大于0的数,那么循环不就永远进行下去了吗?
求助!{:5_99:}

rencaixiaomeng 发表于 2019-1-23 20:30:57

你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位

wangshuo 发表于 2019-1-23 20:32:08

rencaixiaomeng 发表于 2019-1-23 20:30
你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位

但是如果是大于0的话,x/10永远是一个大于0的数啊

rencaixiaomeng 发表于 2019-1-23 20:38:47

你每次x/=10,x的值就变小,最后变成0,0>0不成立,就退出循环了

wangshuo 发表于 2019-1-23 20:44:11

rencaixiaomeng 发表于 2019-1-23 20:38
你每次x/=10,x的值就变小,最后变成0,0>0不成立,就退出循环了

为什么会等于0呢? 拿365举例,/10等于36.5,/10等于3.65,/10等于0.365,/10等于0.0365   。。。。。。这样下去x也不会变为0啊

rencaixiaomeng 发表于 2019-1-23 20:47:29

int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分

wangshuo 发表于 2019-1-23 20:49:58

rencaixiaomeng 发表于 2019-1-23 20:47
int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分

哦哦,谢啦!
页: [1]
查看完整版本: 求助,为什么while括号中不是x>1,而是x>0