gpt4 book ai didi

c++ - 为什么 'int i = i;' 合法?

转载 作者:IT老高 更新时间:2023-10-28 12:49:47 29 4
gpt4 key购买 nike

Possible Duplicate:
int var = 1; void main() { int i = i; }

以下代码在g++和Visual C++下都可以通过编译。为什么是合法的?看起来不合理,可能会导致隐藏的bug。

int main() {
int i = i;
}

最佳答案

编辑:在语法上是合法的,但如果你使用 x 会导致未定义的行为。

这是合法的,因为您将一个未初始化的变量分配给另一个(嗯,相同的)未初始化的变量。仅仅因为它编译并不意味着它是合法的。这是有效的 C++ 语法,是的,但不合法。

赋值运算符的右侧必须在赋值时进行完全计算。在本例中,它是未初始化的 i

感谢史蒂夫·杰索普,他挖出了这句话:

4.1/1,左值到右值的转换

[...] if the object is uninitialized, a program that necessitates this conversion has undefined behavior.

关于c++ - 为什么 'int i = i;' 合法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11186261/

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