【发布时间】:2018-06-30 17:29:20
【问题描述】:
我试图了解 C 中变量的声明和定义。我在学校的学习资料中说,全局未初始化的变量被赋值为 0,而未初始化的局部变量未赋值,并且具有该内存地址中存在的值。
但是,我尝试了以下非常简单的程序:
#include <stdio.h>
void something(){
int third;
int fourth;
printf("third: %d\n", third);
printf("fourth: %d\n", fourth);
}
int main(){
int first;
int second;
printf("first: %d\n",first);
printf("second: %d\n",second);
something();
return 0;
}
输出如下:
first: 382501330
second: 32766
third: 0
fourth: 0
第二次运行:
first: 235426258
second: 32766
third: 0
fourth: 0
观察:
变量“first”似乎每次都按预期分配一个随机数
变量“秒”每次都被分配相同的数字(32766),为什么?
为什么将变量“第三”和“第四”赋值为零,因为它们是局部变量,而不是全局变量?
【问题讨论】:
-
0和235426258是一样随机的 - 在可能的位模式中只有一个。
标签: c variables initialization