多分同じ質問がありましたが、私はそれをどのように公式化するのか分かりません。if else statements調合
int x = 0;
if(someCondition)
{
x = 1;
}
そして
int x;
if(someCondition)
{
x = 1;
}
else
{
x = 0;
}
このよう
多分同じ質問がありましたが、私はそれをどのように公式化するのか分かりません。if else statements調合
int x = 0;
if(someCondition)
{
x = 1;
}
そして
int x;
if(someCondition)
{
x = 1;
}
else
{
x = 0;
}
このよう
リトル質問は、godboltなどのオンラインのコンパイラでテストすることは非常に容易されています:アセンブラ結果
int test1(bool someCondition)
{
int x = 0;
if(someCondition)
{
x = 1;
}
return x;
}
int test2(bool someCondition)
{
int x;
if(someCondition)
{
x = 1;
}
else
{
x = 0;
}
return x;
}
int test3(bool someCondition)
{
return someCondition ? 1 : 0;
}
int test4(bool someCondition)
{
return int(someCondition);
}
:
は、それは何か違いですtest1(bool):
movzx eax, dil
ret
test2(bool):
movzx eax, dil
ret
test3(bool):
movzx eax, dil
ret
test4(bool):
movzx eax, dil
ret
だから、実際にはない。それは単なるスタイルの問題です。
@テストの前に変数をゼロに設定することに暗黙的なelseがあります。関心のある人のためのゴッドボルトへのリンク –
:https://gcc.godbolt.org/ – primodemus
コンパイラは、それがまったく同じであることを理解するのに十分巧妙であり、同じコードを生成します。
違いは可読性と保守性です。いずれかのバージョンを大きなプログラムの一部として使用している場合は、実行されていることの論理的概念を反映する必要があります。
どちらも同じことを行います。 – DimChtz
技術的に違いはありませんが、常に変数の初期化を優先することができます(c#IIRCでは不要)。 –
結果は同じですが、パフォーマンスやその他の違いはありますか? –