Arduino

технологии

Операторы сравнения

== (равно)

Оператор равенства. Возвращает true, если a равно b, в противном случае возвращает false.

if (a == b) {
  // код при условии что a равно b
} else {
  // код при условии что a не равно b
}

При использовании в управляющих операторах if и while нужно быть осторожным и не перепутать его с оператором присваивания = (одиночный символ равенства), например:

if (a = b) {
  // код
}

В данном примере код внутри условного оператора будет выполнен при всех значениях переменной b, отличных от 0. Дело в том, что оператор присваивания возвращает присвоенное значение (то есть значение b) и оно преобразуется к типу bool. Поэтому при всех ненулевых b оно будет преобразовано к true, а при нулевом значении - к false.

Мало того, что отработает код, который отработать не должен был. Также и будет изменено значение переменной a.

Чтобы сделать код чуть безопаснее, можно использовать так называемый "йода-стиль", где в условном операторе всегда на первом месте идет константа, а уже потом переменная:

if (5 == a) {
  // код
}

В таком случае если перепутать оператор сравнение с оператором присваивания, компилятор выдаст ошибку. Однако при таком подходе код становится менее "читабельным", а также он не поможет при сравнении двух переменных.

!= (не равно)

Оператор неравенства. Возвращает true когда a не равно b, и false, когда a равно b.

if (a != b) {
  // код при условии что a не равно b
} else {
  // код при условии что a равно b
}

< (меньше)

Оператор "меньше". Возвращает true когда первый аргумент меньше второго и false, когда первый аргумент равен второму или больше него.

if (a < b) {
  // код при условии что a меньше b
} else {
  // код при условии что a равно b или a больше b
}

> (больше)

Оператор "больше". Возвращает true когда первый аргумент больше второго и false, когда первый аргумент равен второму или меньше него.

if (a > b) {
  // код при условии что a больше b
} else {
  // код при условии что a равно b или a меньше b
}

<= (меньше или равно)

Оператор "меньше или равно". Возвращает true когда первый аргумент меньше второго или равен второму и false, когда первый аргумент больше второго.

if (a <= b) {
  // код при условии что a меньше или равно b
} else {
  // код при условии что a больше b
}

>= (больше или равно)

Оператор "больше или равно". Возвращает true когда первый аргумент больше второго или равен второму и false, когда первый аргумент меньше второго.

if (a >= b) {
  // код при условии что a больше или равно b
} else {
  // код при условии что a меньше b
}