写一个C程序来计算任何数字的位数

时间:2017-04-15 04:52:25

标签: c

我在这段代码中做错了什么? 没有错误,但如果我输入一个4位数的数字输出它是1272 !!

#include<conio.h>
#include<stdio.h>
void main()
{
    int i,n=0;
    clrscr();
    printf("Enter a number");
    scanf("%d",&i);
    while(i>=9)
    {
        i=i/10;
        n++;
    }
    n++;
    printf("This is a %d digit number",n);
    getch();
}

2 个答案:

答案 0 :(得分:2)

未定义的行为,因为您使用了未初始化的本地变量。

在初始化之前不要使用自动存储变量产生未定义的行为

C标准是6.3.2.1 p2:

  

如果左值指定一个自动存储持续时间的对象   可以用寄存器存储类声明(从来没有   它的地址),并且该对象未初始化(未声明   使用初始化程序并且之前未执行任何赋值   使用),行为未定义。

只需初始化您的变量,避免将来出现潜在的问题。

因此,在您的计划中,将n初始化为0

int n = 0;

答案 1 :(得分:1)

n初始化为0。您正在递增垃圾值在n的内存中。