gpt4 book ai didi

c - 局部变量的自动初始化

转载 作者:行者123 更新时间:2023-12-04 09:49:22 24 4
gpt4 key购买 nike

我有以下代码片段。

int j;
printf("%d",j);

正如预期的那样,我得到了一个垃圾值。

32039491

但是当我在上面的代码片段中包含一个循环时,比如

int j;
print("%d",j);
while(j);

我在程序的多次试验中得到以下输出。

0

我一直认为默认情况下局部变量被初始化为垃圾值,但看起来变量在使用循环时会自动初始化。

最佳答案

它具有不确定的值(value)。它可以是任何东西。

引用 C11 §6.7.9

If an object that has automatic storage duration is not initialized explicitly, its value is indeterminate. [...]

除非明确初始化,否则自动局部变量将包含不确定的值。如果您尝试使用一个变量,而它持有不确定的值,或者

  • 没有地址被占用
  • 可以有陷阱表示

使用会导致undefined behavior .

关于c - 局部变量的自动初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41735515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com