Выполнение блока "If", а также "else"
Возможные дубликаты:
Глупый вопрос относительно одновременного выполнения If-Else на С++ или C
Возможно ли выполнить как if, так и else часть if — else control statement?
Привет всем..
У меня был вопрос в таком интервью, на который я не мог ответить.
Рассмотрим следующий блок кода.
Предположим, что необходимы файлы заголовков.
if(.......)
{
printf("hello");
}
else
{
printf("world");
}
без перемещения/добавления какого-либо кода и без использования дополнительных заявлений печати выводить вывод как "Hello world".. Вам нужно написать отсутствующее условие в if statement..
возможно ли выполнить оба блока по некоторому условию? Пожалуйста, помогите
Ответы
Ответ 1
попробуйте fork()
! (и присоединиться потом). Это единственная функция, связанная с квантовой механикой, о которой я знаю.
fork()
возвращает два разных значения за раз, на которые способен только кошка Шредингера.
ПРИМЕЧАНИЕ: В комментарии, Donal Fellows предлагает:
Вы получите более надежное поведение с !vfork()
Ответ 2
Это будет работать
if(schrodingers_cat_is_dead())
{
printf("hello");
}
else
{
printf("world");
}
К сожалению, как только вы посмотрите на результат, он не только рухнет в состояние только создания "привет" или "мира", но у вас будет 50% шанс убить кошку.
Ответ 3
Если вы можете указать определение макроса как "часть" этого условия...
if (1
#define else if (1)
)
{
printf("hello");
}
else
{
printf("world");
}
Тогда этот код действительно напечатает "helloworld
". Это ужасный, грязный трюк; моя душа, вероятно, в беде, чтобы упомянуть об этом!
Ответ 4
Это зависит от точной формулировки вопроса. Когда вы это описываете, вопрос не требует от вас выполнения обеих ветвей оператора if. Он просит вас вставить условие, которое приводит к печати "hello world" без изменения чего-либо еще.
Если у вас есть полная свобода в том, что вы вложили в это условие, вы можете использовать это решение:
if(printf("hello ") == -1)
{
printf("hello");
}
else
{
printf("world");
}
Однако в решении используется "printf", что исключается одним из правил, которые вы указали. Для меня неясно, относится ли запрет на печать, что вы пишете в этом состоянии.
Примечание. Ответ редактируется для отражения комментариев. Первоначальный ответ игнорировал запрет на заявления печати.
Ответ 5
Вы можете, но это, вероятно, плохая практика. Кажется, интервьюер тестировал ваши знания языка. Построено с gcc 4.1.2.
#include <stdio.h>
int main() {
if(!printf("hello ")) {
printf("hello");
} else {
printf("world");
}
return 0;
}
Ответ 6
Есть один возможный способ, он не рекомендуется.
if(check==true)
{
printf("dont do this");
goto condition1;
}
else
{
condition1: ////this is crazy
printf("Dont do this ever");
}
Ответ 7
Нет, это невозможно. Будет выполнен первый блок или блок else; это характер оператора if
.
Ответ 8
Невозможно выполнить обе ветки if/else, не используя ее со странными вещами. Если условие истинно, то else не будет выполняться и наоборот.
Они абсолютно взаимоисключающие.
Ответ 9
Не оборачиваясь снова. Я не думаю, что вы можете использовать любое устройство Duff, как безумие в заявлениях. Я полагаю, вы могли бы использовать goto, вы говорите, просто написав условие.
Ответ 10
В отладчике вы можете пройти через блок if, а затем переместить выполнение в блок else, чтобы выполнить, но это просто глупый ответ на то, что мне кажется глупым вопросом.
Ответ 11
Проще всего я думаю:
//if(.......)
{
printf("hello");
}
//else
{
printf("world");
}
Ответ 12
Не работает ли это?
if (!printf("hello")){
printf("hello");
}
else{
printf(" world");
}
Ответ 13
вы можете попробовать:
if()
{
printf("hello");
goto Found;
}
else
{
Found: printf("world");
}