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

来源:6-12 综合练习

qq_阮_0

2019-10-28 11:48

#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回答

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

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

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926020 学习 · 20793 问题

查看课程

相似问题