Hello
single を使用して 2 回印刷することは可能でしょうcondition
か?
if "condition"
printf ("Hello");
else
printf("World");
Hello
single を使用して 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
。に何を使用してもcondition
、そのスニペットは「Hello」または「World」のいずれかを出力しますが、両方を出力することはありません。
編集:さて、それはひっかけ問題であり、条件に好きなものを入れることができます(必要なことを行う他の関数全体への呼び出しを含む)。しかし、それはほとんど興味深いものではありません。正解したからってダウンモッドされたなんて信じられない。
if ( printf("Hello")==0)
[ http://www.coders2020.com/what-does-printf-return]を参照
(マットは私の=を修正しました、ありがとう、Cは遠く離れています)
printf
頭のてっぺんからの戻り値を知らなくても:
if (printf("Hello") && 0)
printf("Hello");
else
printf("World");
"else" にコメントしてください ;)
if(foo)
{
bar();
}
//else
{
baz();
}
基本的な答えは、通常の一連のイベントでは、「if」ブロックと「else」ブロックの両方のステートメントをコードの 1 回のパスで実行したくないということです (実行する場合、条件を気にする必要はありません)。グロテスクなフープをジャンプすることなく、両方のステートメントのセットを実行します。
いくつかのグロテスクなフープ - 邪悪なコード!
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
}
}
への愛はありませんexit
か?
if(printf("HelloWorld"), exit(0), "ByeBye")
printf ("Hello");
else
printf ("World");
if (true) printf ("Hello"); if (false)
printf ("Hello");
else
printf("World");
では... if ブロック内のコードを実行したい... および else ブロック内のコードを... 同じ if/else ステートメントで実行したいですか? 次に...elseを取り除き、ifにtahtコードを貼り付ける必要があります。
if something
do_this
do_that
end
else ステートメントは、if ステートメントが実行されない場合にのみ実行されるように設計されており、その逆も同様です。これは奇妙な質問です...
解決策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;
}
これはうまくいくかもしれません:
if (printf("Hello") - strlen("Hello"))
printf("Hello")
else
printf("World")
このスニペットは、次の戻り値を強調していますprintf
。印刷された文字数。
#include<stdio.h>
int main()
{
if(! printf("Hello"))
printf ("Hello");
else
printf ("World");
return 0;
}
Printf は正常に印刷された文字数を返すためです。
if..else ブロックの前後にコードを配置するだけです。
あるいは、「if、else if、else」ブロックがあり、すべてではなく一部のブランチでコードを実行したい場合は、それを別の関数に入れて、各ブロック内でその関数を呼び出すだけです。
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 つである goto を使用する
非常に興味深い人たち、答えてくれてありがとう。if 条件の中に print ステートメントを入れることなど考えたこともありませんでした。
同等の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")
if (printf("Hello") < 1)
printf("Hello");
else
printf("World");
前処理の乱用 - 少なくともクリーンアップあり。
#define else
if(1)
{
printf("hello");
}
else
{
printf("world");
}
#undef else
if (printf("hello") & 0)
{
printf("hello");
}
else
{
printf("world");
printf の戻り値を気にする必要はありません。
if else ブロック then を使用しないでください。
編集してコメントします。
その場合、コードが両方のブロックにあるか、両方のケースで実行する必要がある場合はブロックの前後にあることを意味する場合があります。
グレッグは書きました:
条件に何を使用しても、そのスニペットは「Hello」または「World」のいずれかを出力しますが、両方を出力することはありません。
まあ、これは真実ではありませんが、なぜ両方を印刷する必要があるのか 、ユースケースが見つかりません. if ステートメントを使用するという点を無効にしています。おそらく「本当の」解決策は、if をまったく使用しないことです。ばかげたインタビューの質問... :)
空の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;
}
}
この質問の条件は次のとおりです。
if(printf("hello")? 0 : 1) { }