3

!=以上を使用する特別な理由はあります==か?

私はそれがより一般的であるように思われることに気づき!=ましたが、これには理由があるのだろうかと思いました。

4

6 に答える 6

3

このようなコードがある場合:

if (a == b)
{
    // block 1
}
else
{
    // block 2
}

次のように書き直すことができます。

if (a != b)
{
    // block 2
}
else
{
    // block 1
}

これらの2つの例は同じことをします。どちらも他より効率的ではありません。一方が他方よりも多く使用される場合、それは個人的な好みかもしれません。

于 2012-07-27T09:59:11.453 に答える
2

表現しようとしている論理条件を使用する==か、それに応じて使用する必要があります。と条件の両方、つまりと部分の!=両方を気にする場合、切り替えの正味の効果(単純な比較の場合)は、どのコードをどの部分に表示する必要があるかだけです。truefalseifelse

コーディングスタイルがあります。ブール式の正の形成に関する(本) Code Completeのセクションを参照してください。これは、正の値を表すブール式は、負の値を表すブール式よりも理解しやすいことを示しています。

条件が評価されるときにtrueのみ気にする場合、たとえば、等しい場合(for ==)または等しくない場合(for)のみ気にする場合は、正しいセクションを選択すればセクション!=は必要ありません。else

于 2012-07-27T10:06:16.740 に答える
1

ほとんどの場合、!=または==を使用する設定は、コンテンツによって異なります。

resultOfOperationOrCall = operationOrCall(...);
if (resultOfOperationOrCall != somePredefinedErrorTypeValue) {
// Normal processing
} else {
// Exception/error processing
}

ここで!=を使用する方が、==を使用するよりも論理的に明確です。

于 2012-07-27T10:07:56.817 に答える
1

私はそれがより明確である(そして間違いとして!=書く可能性が少ない)ので好む。=

于 2012-07-27T10:37:12.900 に答える
0

==と!=の両方のアセンブリコードが存在するため、x86アーキテクチャの効率的または非効率的なコードの問題はありません。したがって、それらのいずれかを使用できます。

一部のマシンでアセンブリコードが利用できない場合、コンパイラによって追加の操作(つまり、追加のアセンブリコードの追加)を実行することで、効率的または非効率的になります。

于 2012-07-27T11:20:54.507 に答える
0

その全体的かつ唯一は、ユーザーの認識とニーズに依存します。なぜ!= more ==を使用するのか、理由はわかりません。

于 2012-07-27T12:20:51.337 に答える