1

コードを確認しているときに、評価に続いてifを使用していくつかの文に出くわしました。!!=

if (!(fs.ReadByte() != (byte)'D' ||
      fs.ReadByte() != (byte)'I' ||
      fs.ReadByte() != (byte)'C' ||
      fs.ReadByte() != (byte)'M'))
{
    Console.WriteLine("Not a DCM");
    return;
}

ポジティブの評価よりもダブルネガティブを使用する理由はありますか?

if ((fs.ReadByte() == (byte)'D' ||
     fs.ReadByte() == (byte)'I' ||
     fs.ReadByte() == (byte)'C' ||
     fs.ReadByte() == (byte)'M'))
{
    Console.WriteLine("Not a DCM");
    return;
}

ありがとう

4

1 に答える 1

5

これら2つ異なります。最初は「これらのどれも等しくない」と言い、2番目は「これらのどれも等しい」と言います。

それらに演算子を適用した場合は、を:!に変更する必要があります||&&

if ((fs.ReadByte() == (byte)'D' &&
     fs.ReadByte() == (byte)'I' &&
     fs.ReadByte() == (byte)'C' &&
     fs.ReadByte() == (byte)'M'))
{
    Console.WriteLine("Not a DCM");
    return;
}
于 2012-08-25T23:08:50.597 に答える