为了账号安全,请及时绑定邮箱和手机立即绑定

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

正在回答

1 回答

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

1 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

求解 C 变量初始值问题 为什么不是0

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信