Выполнение обоих веток условного оператора if за один проход

Рейтинг: 1Ответов: 2Опубликовано: 04.11.2014

Каким должно быть <условие>, чтобы код ниже печатал ”HelloWorld”?

if (<условие>)
   printf("Hello");
else
    printf("World");

Ответы

▲ 10Принят

Например, <условие> может быть !printf("Hello").

▲ 1

Пришел в голову ещё один вариант. Он, конечно, для эстетов, но все же. Никто не сказал, что это должно быть честное условие.

Условие должно быть таким (символ в символ):

1) printf("Hello"); if (0

А чтобы это было невидимым, то пишем так:

#include <stdio.h>
#define cond 1) printf("Hello"); if (0
int main(void) {
    if (cond) 
      printf("Hello");
    else
      printf("World");
    return 0;
}

Для тех, кто не понял, как это работает, сделайте подстановку и отформатируйте код. Будет такое:

#include <stdio.h>

int main(void) {
    if (1) printf("Hello"); 
    if (0) 
      printf("Hello");
    else
      printf("World");
    return 0;
}