比較演算子
==, !=, <, >, <=, >=
比較演算子==、!=、<、>、<=、> =は2つの数値を比較するために使用されます。 比較が真の場合はtrue、そうでない場合はfalseです。 それらは、数学から=、≠、<、>、≤、≥の記号に基づいています。
いくつかの例がありますが、その意味はコメントにあります:
code:sample1.ino
// "eq" is true when x is equal to y
bool eq = (x == y);
// "neq" is true when x is different than y
bool neq = (x != y);
// "lt" is true when x is less than, but NOT equal to, y
bool lt = (x < y);
// "gt" is true when x is greater than, but NOT equal to, y
bool gt = (x > y);
// "lte" is true when x is less than or equal to y
bool lte = (x <= y);
// "gte" is true when x is greater than or equal to y
bool gte = (x >= y);
かっこはオプションです。 それらは分かりやすくするためにのみ存在しています。 たとえば、次の2行は同じです。
code:sample2.ino
bool eq = x == y;
bool eq = (x == y);
用途
ブール演算子と比較演算子は、ifステートメントの条件内で便利です。 ここに1つの例があります:
code:sample3.ino
if (x < 50) {
// only execute these lines if x is less than 50
SerialUSB.println("delaying:");
SerialUSB.println(x);
delay(x);
}
警告
2つの数字が等しい(==)かどうかをテストするときは、誤って単一の等号(=)を使用することに注意してください。 ifステートメントの条件の中でよくある間違いです。
例:
code:sample4.ino
// DON'T MAKE THIS MISTAKE
if (x = 10) {
// body
}
単一の等号は代入演算子で、xを10に設定します(変数xに値10を代入します)。 代わりに、比較演算子である二等号(if (x == 10) )を使用し、xが10に等しいかどうかをテストします。 後者のステートメントは、xが10の場合にのみ当てはまりますが、前のステートメントは常に真です。
これは、Cが次のようにif (x = 10) を評価するためです。10がxに割り当てられます(1つの等号が代入演算子であることに注意してください)。したがって、xは10を含みます。 ゼロ以外の数値がtrueと評価されるため、trueと評価されます。
したがって、if(x = 10) {...}のようなif文の条件は常にtrueと評価され、変数xは10に設定されますが、これはおそらくあなたが意図したものではありません。
(これは時には用途がありますが、条件内に割り当てが表示されてもそれが自動的に間違っているわけではありません)
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。