【发布时间】:2020-12-02 12:33:48
【问题描述】:
所以我在 c 中声明了一个名为 toplam 的整数,但根本没有给它一个值。然而,当我打开手表窗口时,它显示它的值为 16。我使用了一个在线 c 编译器并将代码复制并粘贴到其中,它运行顺利,除非被询问,否则没有为 toplam 分配任何值。我认为这是 Codeblocks 本身的错误,但我不确定。如何解决这个问题,而不必从 toplam 中减去 16 以使其为 0?
int fak(int j){
int sonuc=1;
while(j!=0){
sonuc = sonuc * j;
j--;
}
return sonuc;
}
int main()
{
int sayi,i,j,sonuc,toplam;
printf("sayi giriniz: \n");
scanf("%d",&sayi);
for(i=1;;i*=10){
if(sayi/i==0){
break;
}
j=(sayi/i)%10;
printf("%d\n",j);
toplam=toplam+fak(j);
}
printf("%d",toplam);
return 0;
}
这是我的代码。它获取输入的数字并打印出其中的各个数字,然后将它们的 faktorials 相加。
【问题讨论】:
-
正如该问题的第一个答案中所解释的:stackoverflow.com/questions/21152138/… 未明确初始化的局部变量具有不确定的值,包括可能导致未定义行为的“陷阱表示”。如果您希望
toplam为0,请将其初始化为0。 -
如果不初始化,你期望看到什么值?在其生命周期中,变量始终具有值。它不能没有价值。
-
@Virgile 是的,非常感谢,我是编码新手,我不知道这是一回事 :)
标签: c variables codeblocks