📜  C C ++中未初始化的原始数据类型(1)

📅  最后修改于: 2023-12-03 15:13:44.172000             🧑  作者: Mango

未初始化的原始数据类型

在C和C++中,如果我们定义了一个变量但没有给它初始化,那么它的初始值将是不确定的,也就是说,在声明变量时,它会被设为一个随机值。这里主要介绍未初始化的原始数据类型。

简单类型
整型

未初始化的整数(int、long、short和其他整型)在存储空间中是随机的,它们的值由系统分配给内存中的这个位置,这个值不是一个明确定义的数字,而只是一串随机的二进制数。

int i;
printf("%d",i); // 输出 i 的初始值(随机值)
字符

未初始化的字符在存储空间中也是随机的,同样的道理。

char c;
printf("%c", c); // 输出 c 的初始值(随机字符)
浮点数

对于未初始化的浮点数(float和double),其实也是随机的,虽然它们经常表现为0.0,但这是不可靠的。

float f;
printf("%f", f); // 输出 f 的初始值(随机数)
复合类型
结构体

如果一个结构体未初始化,那么其每个成员都将未初始化,其初值和未声明变量的初值一样。

struct Person {
  char name[50];
  int age;
};
Person p;
printf("%d", p.age); // 输出 p.age 的初始值(随机数值)
数组

如果未初始化数组,则数组中每个元素的初始值是未定义的。

int arr[5];
printf("%d", arr[0]); // 输出 arr[0] 的初始值(随机数值)
总结

未初始化的变量不是好的编程习惯,它们是随机的,其结果不确定。因此,我们应该总是为变量赋一个明确的初始值,以避免引入不确定性和错误。