Я что-то не понимаю или почему C++ мне выводит, что k = 82899, T = 82899. Это каким образом первый if отработал в "положительную" сторону? #include
while (++k < 25905 * k + 75);
1. если бы не было переполнения, цикл бы никогда не прекращался
так как k*25905 + 75 всегда меньше k. (так как k и Т изменяются одинаково в одном месте, и имеют одинаковый тип то T = k)
2. из-за переполнения когда к = 82899, произведение становится отрицательным числом, равным -2147468626. На этом цикл останавливается.
goto - ЗЛО, применять его нужно только в самом крайнем случаеПроход программы под отладчиком показывает, что и первый, и второй if отрабатывают ну просто очень не скоро.25905 × 82899 = 2147498595 Далее прибавляем к числу 75: 2147498670 Затем вычтем из этого числа трдцатидвухразрядное представление максимально большого числа 0x7FFFFFFF (2147483647): 2147498670−2147483647 = 15023