Что не так с литейными примитивами?
Если вы не хотите бросать по какой-либо причине, вы можете сделать
double d = num * 1.0 / denom;
if ( printf("Hello") == 0 )
printf ("Hello");
else
printf ("World");
:-)
Очень интересные парни, спасибо за ответы. Я никогда не думал бы о вставлении оператора печати если условие.
Вот эквивалентный Java:
if ( System.out.printf("Hello").equals("") )
System.out.printf("Hello");
else
System.out.printf("World");
if (printf("Hello") < 1)
printf("Hello");
else
printf("World");
Greg записал:
Независимо от того, что Вы используете для условия, тот отрывок или распечатает "Привет", или "Мир", но никогда оба.
ну, это не верно, но почему Вы были бы хотеть это распечатать обоих, я не могу найти вариант использования для. Это побеждает точку наличия если оператор. Вероятное "реальное" решение не состоит в том, чтобы использовать если вообще. Глупые вопросы об интервью... :)
if(printf("Hello") == 1)
printf("Hello")
else
printf("World")
Это могло работать:
if (printf("Hello") - strlen("Hello"))
printf("Hello")
else
printf("World")
Этот отрывок подчеркивает возвращаемое значение printf
: количество символов распечатано.
Solution 1:
int main(int argc, char* argv[])
{
if( argc == 2 || main( 2, NULL ) )
{
printf("Hello ");
}
else
{
printf("World\n");
}
return 0;
}
Solution 2 (Only for Unix and Linux):
int main(int argc, char* argv[])
{
if( !fork() )
{
printf("Hello ");
}
else
{
printf("World\n");
}
return 0;
}
"condition" === (printf("Hello"), 0)
Действительно Ламе:
int main() {
if (printf("Hello"), 0)
printf ("Hello");
else
printf("World");
}
я предпочитаю использование оператора запятой, потому что Вы не должны искать возвращаемое значение printf
для знания то, что делает условное выражение. Это увеличивает удобочитаемость и пригодность для обслуживания. :-)
if (true) printf ("Hello"); if (false)
printf ("Hello");
else
printf("World");
#define CONDITION (0) if (0) {} else
или некоторые такой.
, Если Вы видите такой вопрос на интервью, убегите с такой скоростью, как Вы можете! Команда, которая задает такие вопросы, обязана быть вредной для здоровья.
Редактирование - я забыл разъясняться - это полагается "на" то, чтобы еще быть согласованным самому близкому, открытому, "если", и на том, что оно записано как, "если бы УСЛОВИЕ", а не если (УСЛОВИЕ) - круглая скобка сделала бы загадку неразрешимой.
if ( printf("Hello")==0)
видят [ http://www.coders2020.com/what-does-printf-return]
(матовый, исправил мой =, спасибо, C далеко)
Не зная возвращаемое значение printf
первое, что пришло на ум:
if (printf("Hello") && 0)
printf("Hello");
else
printf("World");
Если это находится на Unix:
if (fork())
printf ("Hello");
else
printf("World");
Ofcoures, который не гарантирует порядку 0f печать
if
оператор выполняется один или другие из проверенных утверждений (оба printf
в Вашем примере). Независимо от того, что Вы используете для condition
, тот отрывок или распечатает "Привет", или "Мир", но никогда оба.
Редактирование: Хорошо, таким образом, это - вопрос о приеме, и можно поместить то, что Вы любите в условии (включая вызов ко всей другой функции, которая делает что-либо, что Вы хотите). Но это едва интересно. Я не могу полагать, что получил downmodded для предоставления корректного ответа.
Нет любви к exit
?
if(printf("HelloWorld"), exit(0), "ByeBye")
printf ("Hello");
else
printf ("World");
Не используйте тогда блок if else.
ИЗМЕНИТЬ в комментарий.
Это может означать, что код находится в обоих блоках или до / после блока, если это необходимо работать в обоих случаях.
Встреча с пустой оператор else:
if (condition)
// do if stuff
else;
// do else stuff
Если вам не нравится, что else; на самом деле пустой оператор else, попробуйте следующее:
for (int ii=0; ii<2; ii++)
{
if (condition && !ii)
// do if stuff
else
{
// do else stuff
break;
}
}
Просто поместите код до или после блока if..else.
В качестве альтернативы, если у вас есть блок «if, else if, else», в котором вы хотите выполнить код в каком-то (но не все) ветви, просто поместите ее в отдельную функцию и вызовите эту функцию в каждом блоке.
используйте goto, одно из самых редко используемых ключевых слов наших дней
Итак ... вы хотите выполнить код внутри блока if ... и код внутри блока else ... того же оператора if / else? Тогда ... вам следует избавиться от else и вставить код taht в if.
if something
do_this
do_that
end
Оператор else предназначен для выполнения только в том случае, если оператор if не выполняется, и наоборот, в этом весь смысл. Странный вопрос ...
int main()
{
runIfElse(true);
runIfElse(false);
return 0;
}
void runIfElse(bool p)
{
if(p)
{
// do if
}
else
{
// do else
}
}
Основной ответ заключается в том, что при обычном ходе событий вы не хотите выполнять оба оператора в блоке if и блоке else за один проход через код (почему возиться с условием, если вы это делаете), и вы не можете выполнить оба набора инструкций, не перепрыгивая через гротескные обручи.
Некоторые гротескные обручи - злой код!
if (condition == true)
{
...stuff...
goto Else;
}
else
{
Else:
...more stuff...
}
Конечно, это явное злоупотребление (любым) языком, потому что это эквивалентен:
if (condition == true)
{
...stuff...
}
...more stuff...
Однако он может достичь того, о чем спрашивает вопрос. Если вам нужно выполнить оба блока вне зависимости от того, истинно или ложно условие, тогда все становится немного сложнее.
done_then = false;
if (condition == true)
{
Then:
...stuff...
done_then = true;
goto Else;
}
else
{
Else:
...more stuff...
if (!done_then) goto Then;
}
Прокомментируйте "else";)
if(foo)
{
bar();
}
//else
{
baz();
}
Пристегните ремни безопасности:
#include <stdio.h>
#include <setjmp.h>
int main()
{
jmp_buf env;
if (!setjmp(env))
{
printf("if executed\n");
longjmp(env, 1);
}
else
{
printf("else executed\n");
}
return 0;
}
Печать:
if executed
else executed
Это то, что вы имеете в виду ? Сомневаюсь, но, по крайней мере, это возможно. Используя fork
, вы также можете сделать это, но ветви будут выполняться в разных процессах.
Для меня это звучит как загадка интервью. Я надеюсь, что это близко к тому, что вы хотите.
#include <stdio.h>
int main()
{
static int i = 0 ;
if( i++==0 ? main(): 1)
printf("Hello,");
else
printf("World\n");
return 0 ;
}
печатает Hello, World