我在这段代码中做错了什么? 没有错误,但如果我输入一个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();
}
答案 0 :(得分:2)
未定义的行为,因为您使用了未初始化的本地变量。
在初始化之前不要使用自动存储变量产生未定义的行为
C标准是6.3.2.1 p2:
如果左值指定一个自动存储持续时间的对象 可以用寄存器存储类声明(从来没有 它的地址),并且该对象未初始化(未声明 使用初始化程序并且之前未执行任何赋值 使用),行为未定义。
只需初始化您的变量,避免将来出现潜在的问题。
因此,在您的计划中,将n
初始化为0
。
int n = 0;
答案 1 :(得分:1)
将n
初始化为0
。您正在递增垃圾值在n
的内存中。