Интересно, почему это C++ код действителен и не вызывает каких-либо ошибок:C++/Java переменная рекурсии инициализации
extern int B;
int A = B;
int B = A;
int main()
{
printf("%d\n", B);
system("pause");
return 0;
}
Во-первых, переменная A
будет создана в некоторой адреса памяти, то его значение будет инициализируется из переменной B
, но затем переменная B
возвращается к инициализации ее значения из переменной A
и т. д., ...
Итак, почему здесь нет бесконечной петли или какой-либо ошибки?
Программа по-прежнему работает нормально, а значение
Это справедливо для Java, а также:
class A {
static final int AA = B.BB;
}
class B {
static final int BB = A.AA;
}
Любой может объяснить эти вопросы для меня, спасибо!
Будьте осторожны здесь. Даже если код может казаться похожим и * кажется * вести себя аналогичным образом, Java и C++ все еще очень разные языки и могут на самом деле вести себя по-разному для другого аналогичного кода. –
Heck, это область, где C и C++ начинают отличаться. – MSalters