gpt4 book ai didi

c - 当您打印已声明但未分配的变量时,C 中会发生什么情况?

转载 作者:太空宇宙 更新时间:2023-11-04 05:36:51 25 4
gpt4 key购买 nike

为什么下面的代码片段会导致使用 printf 将随机数打印到屏幕上,但 putchar 总是输出 1?

#include <stdio.h>

int main() {
char c;

printf("%d\n", c );
putchar(c);
}

最佳答案

根据C99标准,这是undefined behavior .让我们看看原因:

第 6.7.8.9 节说

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

这适用于您的变量 c,因为它具有自动存储持续时间,并且未明确初始化。

第 J.2 节说

The behavior is undefined in the following circumstances:

...

The value of an object with automatic storage duration is used while it is indeterminate

这也适用于您的代码,因为当您将 c 作为参数传递给 printfputchar 时,您会读取它,并且c 的值仍然是不确定的,因为它还没有被赋值。

关于c - 当您打印已声明但未分配的变量时,C 中会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32769922/

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