问答详情
源自:6-12 综合练习

求解 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么 

提问者:qq_阮_0 2019-10-28 11:48

个回答

  • Poplar_Y
    2019-10-28 17:44:54
    已采纳

    定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的(上次用完没清零的),所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是不确定的。