我想知道为什么这段 C++ 代码是有效的并且不会导致任何错误:
extern int B;
int A = B;
int B = A;
int main()
{
printf("%d\n", B);
system("pause");
return 0;
}
首先,变量A
会被创建在一些内存地址,然后它的值会从变量B
初始化,然后是变量B
返回从变量 A
初始化它的值,依此类推,...
那么,为什么这里没有无限循环或任何错误?
程序仍然运行正常,B
的值为0
这对 Java 也有效:
class A {
static final int AA = B.BB;
}
class B {
static final int BB = A.AA;
}
谁能帮我解释一下这些问题,谢谢!
最佳答案
因为我对c++不熟悉,所以只能用java的例子给大家解释一下。
我认为这可以解释问题:
class A {
static final int AA = B.BB;
}
class B {
static final int BB = A.AA;
}
A.AA 初始化为 0
A.AA 寻找 B.BB
B.BB 初始化为 0
B.BB 寻找 A.AA
此时A.AA已经是零值(int的默认值),所以B.BB变为0。
A.AA 变为 0
关于java - C++/Java递归变量初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481281/