在C中初始化一个全局变量 和 在一个函数中初始化一个局部变量, 如果初始化时不赋值默认值都为0吗?
不是的。只有全局变量初始化时的默认值为0,而局部变量默认值是不确定的。所以,局部变量在使用之前一定要先赋值,如果基于一个不确定的值做后续运算必然会引入bug。
下面看一个错误的例子:
#include <stdio.h>
int add_range(int low, int high)
{
int i, sum;
for (i = low; i <= high; i++)
sum = sum + i;
return sum;
}
int main(void)
{
int result[100];
result[0] = add_range(1, 10);
result[1] = add_range(1, 100);
printf("result[0]=%d\nresult[1]=%d\n",result[0],result[1]);
return 0;
}
编译运行之后打印结果为:
result[0]=55
result[1]=5105