鱼C论坛

 找回密码
 立即注册
查看: 1705|回复: 6

[已解决]求助,为什么while括号中不是x>1,而是x>0

[复制链接]
发表于 2019-1-23 20:27:22 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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的数,那么循环不就永远进行下去了吗?
求助!
最佳答案
2019-1-23 20:47:29
int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-1-23 20:30:57 | 显示全部楼层
你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-23 20:32:08 | 显示全部楼层
rencaixiaomeng 发表于 2019-1-23 20:30
你改成x>1,当x=1的时候while就会跳过,算出来的位数会少1位

但是如果是大于0的话,x/10永远是一个大于0的数啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-23 20:38:47 | 显示全部楼层
你每次x/=10,x的值就变小,最后变成0,0>0不成立,就退出循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-23 20:47:29 | 显示全部楼层    本楼为最佳答案   
int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-23 20:49:58 | 显示全部楼层
rencaixiaomeng 发表于 2019-1-23 20:47
int只能存整形,每次除以10,小数点后的数会直接丢掉,只存整数部分

哦哦,谢啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 06:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表