Давайте предположим, что мы имеем следующий цикл:Будет ли петля Infinite никогда не закончится сам себя
for (int i = 1; i < 2; i--)
{
cout << i << endl;
}
Без сомнения, это бесконечное для цикла. Однако, мой вопрос заключается в том, как долго он будет работать? Потому что мой профессор сказал, что если int is 4 bytes = 32 bits
, он может хранить число от -2147483648 to 2147483647
. Учитывая это, он продолжал говорить, что в циклическом режиме, если он когда-либо достигнет одного из этих чисел, и цикл все еще запрограммирован на продолжение (например, этот), то число станет положительным, и условие будет выполняться, завершая цикл.
Мой вопрос в том, как это происходит: как это происходит? Почему число -2147483648 становится +2147483648 в for-loop, и почему +2147483648 превращается в -2147483648 в for-loop? Потому что я думал, что ошибка сегментации произойдет, как только счетчик достигнет 2147483649. Спасибо за ваши ответы!
«Без сомнения, это бесконечный цикл для цикла» ... без сомнения, этот цикл даже не будет выполняться один раз, потому что условие цикла «i> 2' никогда не будет истинным. –
Бесконечный цикл будет 'while (true) {}'. Но похоже, что ваш вопрос действительно касается целочисленной арифметики, а не циклов. – MrEricSir
@TimBiegeleisen Спасибо, что подтвердили это для меня. Думал, что я принимаю сумасшедшие таблетки. – mascoj