作业帮 > 综合 > 作业

c语言,输入一个整数,求它的位数.如1234的位数是4.我编写了以后,凡是位数大于10的都显示9位这是为什么

来源:学生作业帮 编辑:搜搜考试网作业帮 分类:综合作业 时间:2024/07/12 17:06:07
c语言,输入一个整数,求它的位数.如1234的位数是4.我编写了以后,凡是位数大于10的都显示9位这是为什么
#include "stdio.h"
int main()
{
int x,i=0;
printf("请输入一个整数:\n");
scanf("%d",&x);
if(x
c语言,输入一个整数,求它的位数.如1234的位数是4.我编写了以后,凡是位数大于10的都显示9位这是为什么
如果你超出定义变量类型所能存储的最大值 他会溢出,通常计算机会进行循环处理
假设 int 最多能表示到10  你输入11  ,他会输出为1, 同理,你的程序输入的数字超出int 
能表示的最大范围他会溢出处理 ,所得到的结果 可能是1位数 可能是2位数 ., 你说每次都是9位
是个巧合我用你的程序跑了下 输入11位 1 ,输出的就是个10位数.
我输入一个刚大于最大值1的数 就变位1位数了
再问: 怎么修改输入大于十位以上的也能正确输出
再答: 如果你不想限制 ,可以用字符串处理,只要保证输入的字符串的每一位 是数字 就说明输入的字符串是合法的数字,字符串的长度就是你所输入数字的位数, 如果你采用 long long 定义变量 他同样会受到位数的限制,所以你改为字符串的形式