Что такое «условие» в тесте на собеседование? - PullRequest
29 голосов
/ 28 августа 2008

Можно ли будет печатать Hello дважды, используя один condition?

if  "condition"
  printf ("Hello");
else
  printf("World");

Ответы [ 30 ]

0 голосов
/ 21 августа 2012

Условие к этому вопросу:

 if(printf("hello")? 0 : 1) {   }
0 голосов
/ 14 апреля 2012

Два возможных решения без использования операторов printf: -

Первый: -

#include <stdio.h>

int
main(void)
{
  if (!stdin || (stdin = 0, main()))
    printf("hello");
  else
    printf("world");
  return 0;
}

Второй

#include<stdio.h>
void main()
{
if (1
#define else if (1) 
)
{ 
  printf("hello"); 
} 
else
 { 
    printf("world"); 
}
}

Ссылка: - Ссылка1 , Ссылка2

0 голосов
/ 21 ноября 2009

Проверка с пустым оператором else:

if (condition)
    // do if stuff
else;
    // do else stuff

Если вам не нравится тот факт, что еще; на самом деле пустой оператор else, попробуйте это:

for (int ii=0; ii<2; ii++)
{
    if (condition && !ii)
        // do if stuff
    else
    {
        // do else stuff
        break;
    }
}
0 голосов
/ 28 августа 2008
if(printf("Hello") == 1)
    printf("Hello")
else
    printf("World")
0 голосов
/ 21 ноября 2009

используйте goto, одно из самых недоиспользуемых ключевых слов нашего времени

0 голосов
/ 28 августа 2008
if (printf("Hello") < 1)
    printf("Hello");
else
    printf("World");
0 голосов
/ 28 августа 2008

Грег написал:

Независимо от того, что вы используете для условия, этот фрагмент будет либо выводить «Hello», либо «World», но никогда оба.

Ну, это не так, но почему бы вам захотелось , чтобы он напечатал оба, я не могу найти вариант использования. Это побеждает смысл заявления if. Вероятное «реальное» решение - вообще не использовать if. Глупые вопросы интервью ...:)

0 голосов
/ 28 августа 2008

Очень интересные ребята, спасибо за ответы. Я никогда бы не подумал о том, чтобы поместить оператор print в условие if.

Вот эквивалент Java:

    if ( System.out.printf("Hello").equals("") )
        System.out.printf("Hello");
    else
        System.out.printf("World");
0 голосов
/ 01 мая 2015

Злоупотребление предварительной обработкой - как минимум с очисткой.


#define else 
if(1)
{
   printf("hello");
}
else
{
   printf("world");
}
#undef else
0 голосов
/ 21 ноября 2009

Не используйте блок if else then.

РЕДАКТИРОВАТЬ для комментариев.

Это может означать, что код должен находиться в обоих блоках или до / после блока, если требуется выполнить в обоих случаях.

...