Мой вопрос заключается в том, определено ли поведение программы или нет, если оно действительно.Если оно определено, известно ли значение x в main?
Этот код определенно не чистый, но для меня он должен работать предсказуемо.
int x
помещает переменную всегмент данных, который определен как ноль в начале программы.До main()
вызывались статические инициализаторы.Для x
это код x = x + 1
.x = 0 + 1 = 1
.Таким образом, main () вернет 1.
Код определенно будет работать непредсказуемым образом, если x
является локальной переменной, размещенной в стеке.Состояние стека, в отличие от сегмента данных, почти наверняка содержит неопределенный мусор.