gpt4 book ai didi

c++ - 在这个 C++ 代码示例中,我可以是不同的值还是始终为 0

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

 #include <iostream>


int j;

int main(void) {


int i;
std::cout<<i<<std::endl;
std::cout<<j<<std::endl;

return 0;
}

i 可以是不同的值还是始终为 0?初始值合适吗?是不是我意想不到的结果?

最佳答案

您的程序具有未定义的行为,因为它需要对具有不确定值的对象进行左值到右值的转换(请参阅 C++11 标准的第 4.1/1 段)。

简单来说,i 没有任何明确定义的值,因为您没有初始化它,并且尝试读取它的(非)值是未定义的行为。

根据 C++11 标准的第 8.5/7 段:

To default-initialize an object of type T means:

— if T is a (possibly cv-qualified) class type (Clause 9), the default constructor for T is called (and the initialization is ill-formed if T has no accessible default constructor);

— if T is an array type, each element is default-initialized;

otherwise, no initialization is performed.

此外,根据第 8.5/12 段:

If no initializer is specified for an object, the object is default-initialized; if no initialization is performed, an object with automatic or dynamic storage duration has indeterminate value. [...]

关于c++ - 在这个 C++ 代码示例中,我可以是不同的值还是始终为 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16736274/

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