If

Материал из MK90.ORG wiki
Перейти к: навигация, поиск

if (условие) и ==, !=, <, > (операторы сравнения)

if используется в комбинации с операторами сравнения для проверки истинности условий. Например, превышает ли входное значение заданное число. Формат оператора if следующий:


if (someVariable > 50)
{
  // выполнить действия, если условие истинно
}

Этот код сравнивает значение someVariable и число 50 - если текущее значение переменной действительно больше 50, выполняются определенные действия. Иначе говоря, если выражение в круглых скобках истинно, выполняются операторы внутри фигурных скобок. В противном случае, фрагмент в фигурных скобках будет пропущен.

Сами фигурные скобки лишь логически группируют несколько строк в один блок и могут отсутствовать. В этом случае только следующая за оператором if строка (до точки с запятой) становится оператором, выполняемым (или не выполняемым) по условию if.


if (x > 120) digitalWrite(LEDpin, HIGH); 

if (x > 120)
digitalWrite(LEDpin, HIGH); 

if (x > 120){ digitalWrite(LEDpin, HIGH); } 

if (x > 120){ 
  digitalWrite(LEDpin1, HIGH);
  digitalWrite(LEDpin2, HIGH); 
}                                 // различные способы записи условного оператора

Выражения, которые вычисляются внутри круглых скобок, могут состоять из одного или нескольких операторов:

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

x == y (x равно y)

x != y (x не равно y)

x < y (x меньше y)

x > y (x больше y)

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

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


Предупреждение

Отличайте знак простого равенства '=' от оператора сравнения '=='. Использование знака равенства в операторе if может дать совершенно другой результат - например, if (x = 10) совершенно не тоже самое, что if (x==10). Знак равенства – это оператор присваивания, который устанавливает значение переменной х равным 10 (заносит значение 10 в переменную х, а не проверяет ее значение на равенство 10!). Старайтесь не забывать всегда использовать в операторе if знак двойного равенства, который является оператором сравнения и проверяет в данном случае х на равенство 10. Выражение (x=10) всегда истинно, в то время как (x==10) истинно только при условии равенства значения переменной десяти.

Это связано с тем, что язык С вычисляет выражение if (x=10) следующим образом: значение 10 присваивается х (помним, что простой знак равенства – это оператор присваивания), таким образом, х теперь равен 10. После этого вычисленным значением условия становится 10, что по соглашениям языка является ИСТИНОЙ (любое число, отличное от 0 - ИСТИНА, а 0 - ЛОЖЬ).

Поэтому условие if (x=10) будет всегда ИСТИННО, которое обычно не является ожидаемым результатом для оператора if. Вдобавок, переменной х будет присвоено значение 10, что часто также не является ожидаемым эффектом.

If также может быть частью управляющей конструкции ветвления if...else.

Руководство по Wiring


Исправления, пожелания и новые статьи должны быть опубликованы через Форум.

Оригинальные тексты руководств и переводы распространяются Arduino и MK90 на условиях лицензии Creative Commons Attribution-ShareAlike 3.0 License. Примеры исходных кодов и ссылки являются общественным достоянием.