質問

印刷は可能でしょうか Hello シングルを2回使用 condition?

if  "condition"
  printf ("Hello");
else
  printf("World");
役に立ちましたか?

解決

if ( printf("Hello") == 0 )
    printf ("Hello");
else
    printf ("World");

:-)

他のヒント

"condition" === (printf("Hello"), 0)

本当にダサい:

int main() {
    if  (printf("Hello"), 0)
        printf ("Hello");
    else
        printf("World");
}

戻り値を調べる必要がないため、私はカンマ演算子の使用を好みます。 printf 条件式が何をするのかを知るためです。これにより、可読性と保守性が向上します。:-)

これは私には面接パズルのように聞こえます。これがご希望に近いものであることを願っています。


#include <stdio.h>

int main()
{
 static int i = 0 ;
 if( i++==0 ? main(): 1)
  printf("Hello,");
 else
  printf("World\n");

 return 0 ;
}

プリント Hello, World

シートベルトを締めます:

#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 これも実行できますが、ブランチは別のプロセスで実行されます。

Unix 上の場合:

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

もちろん、印刷の順序を保証するものではありません

#define CONDITION (0) if (0) {} else

またはそのようなもの。

面接でそのような質問を見かけたら、すぐに逃げてください。このような質問をするチームは間違いなく不健全です。

編集 - 明確にするのを忘れました - これは、「else」が最も近い開いた「if」と一致すること、および if (CONDITION) ではなく「if CONDITION」として記述されているという事実に依存しています - 括弧を使用するとパズルが解けなくなります。

if ( printf("Hello")==0)

見る [http://www.coders2020.com/what-does-printf-return]

(マットは私の = を修正しました、ありがとう、C は遠くにあります)

if ステートメントは、制御されたステートメントのいずれか (両方とも) を実行します。 printf あなたの例では)。何に使っても condition, の場合、そのスニペットは「Hello」または「World」のいずれかを出力しますが、両方を出力することはありません。

編集:さて、これはひっかけの質問で、条件には好きなものを何でも入れることができます (やりたいことを何でも行う他の関数全体の呼び出しを含む)。しかし、それはほとんど面白くありません。正しい答えをしたためにダウンモッドを受けたことが信じられません。

「else」をコメントしてください ;)

if(foo)
{
    bar();
}
//else
{
    baz();
}

戻り値が分からないまま、 printf 頭の上から:

if (printf("Hello") && 0)
    printf("Hello");
else
    printf("World");

基本的な答えは、通常のイベントの過程では、コードの 1 回のパスで 'if' ブロックと 'else' ブロックの両方のステートメントを実行したくない (実行するのにわざわざ条件を使う必要はない) し、実行することもできないということです。グロテスクなフープを飛び越えることなく、両方のステートメント セットを実行できます。

いくつかのグロテスクなフープ - 邪悪なコード!

    if (condition == true)
    {
         ...stuff...
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
    }

もちろん、これは次の行為と同等であるため、(あらゆる) 言語の明らかな乱用です。

    if (condition == true)
    {
         ...stuff...
    }
    ...more stuff...

ただし、質問の目的を達成できる可能性があります。条件が true か false かに関係なく両方のブロックを実行する必要がある場合、状況は少し複雑になります。

    done_then = false;
    if (condition == true)
    {
Then:
         ...stuff...
         done_then = true;
         goto Else;
    }
    else
    {
Else:
        ...more stuff...
        if (!done_then) goto Then;
    }
int main()
{
    runIfElse(true);
    runIfElse(false);

    return 0;
}

void runIfElse(bool p)
{
    if(p)
    {
     // do if
    }
    else
    {
     // do else
    }
}
if  (true) printf ("Hello"); if (false)
    printf ("Hello");
else
    printf("World");

愛がない exit?

if(printf("HelloWorld"), exit(0), "ByeBye") 
    printf ("Hello");
else
    printf ("World");

それで...if ブロック内のコードを実行したい場合...そしてelseブロック内のコード...同じ if/else ステートメントですか?それから...else を削除して、if にコードを挿入する必要があります。

if something
  do_this
  do_that
end

else ステートメントは、if ステートメントが実行されない場合にのみ実行されるように設計されており、その逆も同様です。これが重要です。奇妙な質問です...

これはうまくいくかもしれません:

if (printf("Hello") - strlen("Hello"))
    printf("Hello")
else
    printf("World")

このスニペットは、戻り値を強調しています。 printf:印刷される文字数。

コードを if..else ブロックの前後に置くだけです。

あるいは、一部の (すべてではない) 分岐でコードを実行する「if、else if、else」ブロックがある場合は、それを別の関数に入れて、各ブロック内でその関数を呼び出すだけです。

解決策 1:

int main(int argc, char* argv[])
{   
    if( argc == 2 || main( 2, NULL ) )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}

解決策 2 (Unix および Linux のみ):

int main(int argc, char* argv[])
{   
    if( !fork() )
    {
        printf("Hello ");   
    }
    else
    {
        printf("World\n");
    }
    return 0;
}
 #include<stdio.h>
  int main()
{
 if(! printf("Hello"))
     printf ("Hello");
else
    printf ("World");
 return 0;
}

Printf は正常に印刷された文字数を返すためです。

if(printf("Hello") == 1)
    printf("Hello")
else
    printf("World")
if (printf("Hello") < 1)
    printf("Hello");
else
    printf("World");

グレッグはこう書きました:

条件に何を使用しても、そのスニペットは「Hello」または「World」のいずれかを出力しますが、両方を出力することはありません。

まあ、これは真実ではありませんが、なぜそうするのでしょうか 欲しい 両方を印刷するには、使用例が見つかりません。これでは if ステートメントを使用する意味が失われます。おそらく「本当の」解決策は、if をまったく使用しないことです。面接でのバカな質問…:)

とても興味深い人たち、答えてくれてありがとう。if 条件の中に print ステートメントを入れることは考えもしませんでした。

Java に相当するものは次のとおりです。

    if ( System.out.printf("Hello").equals("") )
        System.out.printf("Hello");
    else
        System.out.printf("World");

if else ブロック then は使用しないでください。

コメントを編集します。

これは、コードが両方のブロックにあること、または両方の場合で実行する必要がある場合はブロックの前後にあることを意味する場合があります。

今日最も十分に活用されていないキーワードの 1 つである goto を使用する

空の 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;
    }
}

printf ステートメントを使用しない 2 つの解決策:-

初め :-

#include <stdio.h>

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

2番

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

参照 :- リンク1 , リンク2

if (printf("hello") & 0)
{
printf("hello");
}
else
{
printf("world");

printf の戻り値を気にする必要はありません。

前処理の乱用 - 少なくともクリーンアップが必要です。


#define else 
if(1)
{
   printf("hello");
}
else
{
   printf("world");
}
#undef else

この質問に対する条件は次のとおりです。

 if(printf("hello")? 0 : 1) {   }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top