c中char的默认值是多少?

时间:2014-08-29 17:37:19

标签: c local

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

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

3 个答案:

答案 0 :(得分:3)

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

C99标准说:

  

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

旁注:

根据C99

  

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

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

答案 1 :(得分:1)

未初始化的自动变量具有不确定的值,我们可以通过转到草案C99标准部分6.7.8 初始化来看到这一点:

  

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

使用不确定的值为undefined behavior。不确定值的定义如下:

  

未指定的值或陷阱表示

可能是您最终为char结束的值不可打印。

答案 2 :(得分:0)

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