Программирование язык с++ - Вопросы по С+
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Программирование язык с++

Регистрация
14 Ноя 2013
Сообщения
90
Репутация
0
Спасибо
0
Монет
0
Подскажите, пожалуйста.

for (int i = (a / d + (a % d > c)) * d + c; i <= b; i += d) { cout << i << ' '; }

Как работает этот цикл? Он верный, система его приняла. Не понимаю, как действует знак сравнения в центральных скобках арифметического выражения. Что будет если a % d будет меньше с?
 
Регистрация
21 Ноя 2013
Сообщения
74
Репутация
0
Спасибо
0
Монет
0
a % d > c возвращает true либо false, которые при неявном приведении к типу int принимают одно из двух значений 0 либо 1
 
Регистрация
28 Сен 2013
Сообщения
81
Репутация
1
Спасибо
0
Монет
0
(a % d > c) будет равно 1, если верно, и 0, если неверно.
Строго говоря, это выражение дает true или false, которые в арифметических выражениях приводятся к 1 или 0.
 
Регистрация
30 Дек 2013
Сообщения
83
Репутация
0
Спасибо
0
Монет
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 << ' '; }
 
Регистрация
26 Апр 2013
Сообщения
88
Репутация
-3
Спасибо
0
Монет
0
>> Что будет если a % d будет меньше с?
Будет то же самое действие что и при a % d больше с. Оператор ">" будет выполнять операцию сравнения левого операнда с правым и в выражение будет подставлен итог совершенной операции (true или false).
 
Сверху Снизу