不带初始化的定义:带有静态存储持续时间的变量会被隐式初始化为 NULL(所有字节的值都是 0),这种变量到底是什么变量;
;其他所有变量的初始值是未定义的,会有一个默认的初始值。
int main()
{
/* 在申明变量的时候不对变量初始化 */
int i,j,k;
char c,ch;
float f,salary;
double d;
printf("默认整数为%d \n",i);
printf(c);
printf("默认浮点数为%f \n",f);
printf("默认浮点数为%f \n",d);
return 0;
}
以上代码运行的记过
默认整数为0
默认字符为
默认浮点数为0.000000
默认字符为0.000000
该程序中的c和char这两个变量是否就是上面说的变量,它的值为null;
不是,静态变量是用static修饰的,普通的全局变量也是。你这个示例里面的变量都是局部变量,局部变量是存放在栈里面的,栈是不会进行初始化的。之所以打印出来也都是0,是因为你的程序就一个函数,栈很干净。
栈你可以理解成一块重复使用的区域,变量如果不初始化就可能使用到别人之前用过的地方。
你这个示例打印是0,可以理解成这块区域还是一张白纸。
主要看你们CPU,比如32单片机的话,会默认赋值0,如果是window下的某些编译器VC++6.0,就会赋值不确定的值,有可能很大也有可能很小,最好养成初始化赋值的习惯