Я выполнил бы это с простой переменной помощника:
#include <stdio.h>
#include <stdbool.h>
int main()
{
bool b;
printf("Numbers which are multiples of 7:\n");
for (int i=8; b=(i<12); i++)
{
if (i%7==0)
{
printf("%d", i);
break;
}
}
if (!b)
{
printf("no numbers found\n");
}
return 0;
}
Таким образом, необходимо реализовать условие (в вышеупомянутом примере i<12
) только в одном месте.
Я приехал сюда, потому что у меня был тот же вопрос в C все же. Лучшая вещь, которую я выпустил,
bool notTerminated = true;
for (int i = 0; i < 50 || (notTerminated = false); i++)
if (bar(i))
break;
if (! notTerminated)
baz();
Объяснение: эти (notTerminated = false)
присвоение, которое будет всегда возвращать ложное значение, оно никогда не будет влиять на условие и будет оценено iif условие, если верный.