c中char的默认值是多少



当我声明一个int变量时,不给它赋值,然后当我打印它时,会打印一个随机数。

但是,当我分配一个char变量,并使用%c格式说明符打印它时,不会打印任何内容。那么,C中的char变量是否具有类似null的默认值?C中的局部变量是否以随机值开头?那么,为什么字符没有这样的行为呢?

没有分配给它的默认值。有些值是不可打印的,你可以假设随机值是其中之一,所以这就是你无法看到结果的原因。

C99标准规定:

如果具有自动存储持续时间的对象未初始化明确地说,它的值是不确定的。

附带说明:

按照C99

如果具有静态存储持续时间的对象未初始化明确地,那么:

  • 如果它具有指针类型,则将其初始化为空指针
  • 如果它是算术类型,则初始化为(正或无符号)零
  • 如果它是一个聚合,则根据这些规则(递归地)初始化每个成员
  • 如果是并集,则根据这些规则(递归地)初始化第一个命名成员

未初始化的自动变量具有不确定的值,我们可以通过C99标准草案6.7.8初始化:

如果没有显式初始化具有自动存储持续时间的对象,则其值为不确定的

使用不确定的值是未定义的行为。不确定值的定义如下:

未指定的值或陷阱表示

可能只是您最终得到的char值不可打印。

没有指定默认值。永远不要相信你没有分配的默认值。

最新更新