求解 C 變量初始值問題 為什么不是0
#include?<stdio.h>
void?getCount(?int?arr[]);
void?getUp(?int?arr[]);
int?main(){????
????int?score[10]={67,98,75,63,82,79,81,91,66,84};
????????getCount(score);????
????????getUp(score);???
?????????//return?0;
?}
void?getCount(?int?arr[])
{????
????//這里聲明變量?但不賦值;
????int?count;?
????for(int?i=0;i<10;i++)
????{?????
???????count?+=?arr[i];??
????}
?????//輸出正常,count?默認給的0;
?????printf("總分數為%d\n",count);
}
void?getUp(?int?arr[])
{????
????//這里也聲明變量不賦值;
????int?up;????
????for(int?i=0;i<10;i++)
????{????????
????????printf("up?=?%d\n",up);????????
????????if(i+1?>?9)?break;????????
????????if(arr[i]?>?up)
????????{????????????
????????????up?=?arr[i];??????????
????????}????
????????//輸出異常,up默認值為上面的count值?786.。。。。求解
????????printf("最高分為%d\n",up);
}求解 如果在C里面? 聲明 int 變量而不賦值 默認值不應該是0么?
2019-10-28
定義局部變量,其實就是在棧中通過移動棧指針來給程序提供一個內存空間和這個局部變量名綁定。因為這段內存空間在棧上,而棧內存是反復使用的(上次用完沒清零的),所以說使用棧來實現的局部變量定義時如果不顯式初始化,值就是不確定的。