gpt4 book ai didi

c - gcc是否将自动变量初始化为0?

转载 作者:太空宇宙 更新时间:2023-11-04 00:47:58 24 4
gpt4 key购买 nike

为什么我得到 0。我是一个自动变量,所以它应该打印一些垃圾值,对吗?我正在使用 gcc 编译器。

#include "stdio.h"
void main() {
int i;
printf("%d\n", i);
}

最佳答案

Does gcc initializes auto variable to 0?

是与否!
实际上未初始化的自动变量得到不确定值(未指定值或陷阱表示1)。

在程序中使用此类变量会调用未定义的行为——行为,在使用不可移植或错误的程序构造或错误数据时,ANSI C 国际标准对此没有强加任何要求。 (C11:§3.4.3)

调用 UB 后,您可能会得到预期或意外的结果。结果可能因该程序的运行、编译器与编译器甚至同一编译器的版本而异,甚至在系统温度上也不同!


<子> 1。可以将自动变量初始化为陷阱表示而不会导致未定义的行为,但是在将适当的值存储在其中之前,不能使用该变量的值。 (C11: 6.2.6 Representations of types--Footnote 50)

关于c - gcc是否将自动变量初始化为0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903947/

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