求助,为什么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:} 你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位 rencaixiaomeng 发表于 2019-1-23 20:30
你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位
但是如果是大于0的话,x/10永远是一个大于0的数啊 你每次x/=10,x的值就变小,最后变成0,0>0不成立,就退出循环了 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啊 int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分 rencaixiaomeng 发表于 2019-1-23 20:47
int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分
哦哦,谢啦!
页:
[1]