for (int i = (a / d + (a % d > c)) * d + c; i <= b; i += d) { cout << i << ' '; }
Как работает этот цикл? Он верный, система его приняла. Не понимаю, как действует знак сравнения в центральных скобках арифметического выражения. Что будет если a % d будет меньше с?
(a % d > c) будет равно 1, если верно, и 0, если неверно.
Строго говоря, это выражение дает true или false, которые в арифметических выражениях приводятся к 1 или 0.
a % d > c возвращает либо true, либо false
после этого следует неявная конвертация в int, true становится 1, false становить 0.
можешь записать это как
if( a % d > c ) for (int i = (a / d + 1) * d + c; i <= b; i += d) { cout << i << ' '; }
else for (int i = (a / d ) * d + c; i <= b; i += d) { cout << i << ' '; }
>> Что будет если a % d будет меньше с?
Будет то же самое действие что и при a % d больше с. Оператор ">" будет выполнять операцию сравнения левого операнда с правым и в выражение будет подставлен итог совершенной операции (true или false).