" С большой силой (предоставленной C ++) также должна быть большая ответственность "
И
" С неинициализированными переменными приходит неопределенное поведение"
Переменные, объявленные в глобальной области видимости, инициализируются компилятором. Однако переменные, определенные внутри любой функции (т. Е. Имеющие automati c storage ), могут содержать значения мусора (которые могут различаться при каждом вызове программы). Я рекомендую всегда инициализировать ваши переменные некоторым значением.
int main()
{
int mis = 0, chr = 0;
// ...
return 0;
}
Давайте теперь перейдем к вашей программе:
Когда я объявляю переменную вне главной функции, программа работает правильно, то есть он достигает еще одного случая: «Дружба - это волхвы» c
Это происходит потому, что переменные (от которых зависит ваша лестница) инициализируются в 0
. Поскольку обе переменные имеют одинаковое значение (0
), выполняется другая часть оператора if.
, но если переменная объявлена внутри, вместо выражения Friendship возвращается Chris.
Это прекрасный пример неопределенного поведения. Если они определены внутри вашей функции, они будут содержать некоторое значение мусора, которое может быть не равным. Следовательно, то, что вы наблюдаете, является неопределенным поведением, и вы можете получить разные результаты на разных машинах или даже иногда на одной машине.