-1

重複の可能性:
3 進にするか、3 進にしないか?

今日、私の C の本を読んでいるときに、小さな宝石に出くわしました:?演算子です。これは、天気に基づいた if else ステートメントのように機能する三項演算子であり、ステートメントが true または false ではありません。

どうやら、?演算子を使用する方が効率的であると思われます。

次のコードでは、if / else ステートメントを使用しています (失敗時に somefunc が NULL を返すと仮定します)。

foo = somefunc();
if(foo) printf("\nFunction Suceeded!");
else printf("\nFunction Failed!");

これはコードは最初のものと同じですが、?演算子を使用しています:

somefunc() ? printf("\nFunction Suceeded!") : printf("\nFunction Failed!");

ほとんどの場合、これが役に立たないことはわかりますが、if / else ステートメントの代わりにこれを簡単に使用できる例を数え切れないほど見てきました。

この方法を使用することは良い習慣ですか?

4

2 に答える 2

3

効率はさておき、より読みやすい方を使用する必要があります。

効率が含まれており、実際?に効率が高ければ、コンパイラは間違いなくステートメントを式に自動的に書き換えます。なぜそうしないのですか?if?

于 2012-08-25T22:45:49.967 に答える
1

三項演算子は慎重に使用してください。これは間違いなく便利で、適切な省略形になる可能性がありますが、コードが読みにくくなる可能性もあります。あなたの例はこれを示しています。

于 2012-08-25T22:45:06.160 に答える