Выполнение обоих веток условного оператора if за один проход
Каким должно быть <условие>
, чтобы код ниже печатал ”HelloWorld”?
if (<условие>)
printf("Hello");
else
printf("World");
Источник: Stack Overflow на русском
Каким должно быть <условие>
, чтобы код ниже печатал ”HelloWorld”?
if (<условие>)
printf("Hello");
else
printf("World");
Например, <условие>
может быть !printf("Hello")
.
Пришел в голову ещё один вариант. Он, конечно, для эстетов, но все же. Никто не сказал, что это должно быть честное условие.
Условие должно быть таким (символ в символ):
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;
}