「==」が if ステートメント内で使用されているのを見たことがあります。では、このコンテキストで "==" はどのように機能するのでしょうか?
a = 5;
b = (a == 18 % 13);
bが の場合bool、式の結果を代入できます。この場合、条件a == 18 % 13が成立すれば、そうでなければbとなります。truefalse
基本的、
a == 18 % 13 - would yield b = true or b = 1
と
a != 18 % 13 - would yield b = false or b = 0
の種類によりbます。
これ
a == 18 % 3
と同等です
a == (18%3)
モジュラス演算子%は等値演算子よりも優先順位が高いためです==。
この式はtrueorに評価されますfalse(実際、trueこの場合)。したがって、その結果を variable に代入していますb。bそれ自体はboolまたは から変換できるものであれば何でもかまいませんbool。
わかりました、分解しましょう..
質問は:
a = 5, b=(a==18%13); // What is b?
ブラケットから始めます。モジュラス演算子と呼ばれる % は、2 つの数値を割った余りを返します。したがって、18/13 は 1 余り 5 を返します。
18%13 = 5;
// so now we have
b=(a==5);
現在、等価演算子 == は true または false、1 または 0 のみを返すことができます。これは、左側のオペランドが右側のオペランドと等しいかどうかを尋ねるのと同じです。この場合:
5 == 5; returns true or 1;
したがって、b = 1;
C と C++ はそれほど高水準ではありません。それらには真のブール型はありません (ただし、C++ および C99 には、ブール値として機能する小さな幅の整数型を提供するための typedef があります)。そのため、ゼロ以外の整数、浮動小数点、またはポインター値はブール値の true として扱われ、ゼロは false として扱われます。 . 結果として、論理式は 1 (真) または 0 (偽) に評価されるため、整数に割り当てることができます。