Как поменять цикл while на for?

86
11 июля 2021, 07:30

я стараюсь не использовать цикл while, потому что он мне не нравиться. Но мне нужно вызвать функцию ReceiveAndPrint и проверить ее, не равна ли она 0, после этого завершить цикл.

Через while это делается так.

while (ReceiveAndPrint(ConnSocket, Buffer, sizeof(Buffer)) != 0);

Вопрос как тоже самое делать через цикл for

Answer 1
for(;;)
{
    if(0 != ReceiveAndPrint(ConnSocket, Buffer, sizeof(Buffer)))
    {
        break;
    }
}
Answer 2

Цикл

while (условие)
  ...

полностью эквивалентен циклу

for (; условие; )
  ...

поэтому в вашем случае формальная замена будет выглядеть просто как

for (; ReceiveAndPrint(ConnSocket, Buffer, sizeof(Buffer)) != 0; );

В чем смысл такой замены и зачем она вам понадобилась, правда, не ясно.

READ ALSO
Как перемешать массив таким образом, чтобы модуль разности любых соседних чисел был не меньше чем 5?

Как перемешать массив таким образом, чтобы модуль разности любых соседних чисел был не меньше чем 5?

Заполнить одномерный массив размером 200 элементов случайными и неповторяющимися числами в диапазоне 1 – 200

118
Чтение сокета средствами C++

Чтение сокета средствами C++

Пишу сервер на С++, отправляю ему данные вида dhw6558d5fjf48dnbp5fps5tkze5f83n{\"gl\":\"123\"} а получаю это и еще 5 непонятных символов

116
Возвращаемый тип main должен быть int, а не void [дубликат]

Возвращаемый тип main должен быть int, а не void [дубликат]

Конечно, согласно стандарту - cмраздел 6

145