Я готовлюсь к экзамену C, и мне задали этот вопрос:
"Учитывая этот код, он заканчивается? Если да, то почему?"
int main() {
unsigned int i;
for (i=1; i>0; i++);
return 0;
}
Я думал, что он действительно завершается из-за природы unsigned int
: в течение l oop i
свободно переходит от 1 к максимальному значению (которое я считаю равным 2 ^ 32-1), затем l oop встречает исключение переполнения и возвращается к 0, первое значение для беззнакового целого. Это противоречит условию i> 0 в l oop и завершает его, возвращая «0» и завершая программу.
Верна ли моя гипотеза? У нас нет решения, данного профессором, поэтому, хотя оно и имеет смысл, оно может быть ужасно неправильным, поэтому мне нужна ваша помощь.