Типичные ошибки. 1. Использование в выражени­ях вместо проверки на равенство (= =) простого присваивания (=)

1. Использование в выражени­ях вместо проверки на равенство (= =) простого присваивания (=).

if (а = 1) b=0;

Синтаксической ошибки нет, так как операция присваивания формирует результат, кото­рый и оценивается на равенство/неравенство нулю. В данном примере присваивание пере­менной b будет выполнено независимо от значения переменной а. Поэтому константу рекомендуется записывать слева от операции сравнения: if (1 ==а) b=0;.

2. неверная запись проверки на принадлежность диапазону

0<х<l неверно

0<х && х<l верно

Оператор switch

Оператор switch (переключатель) предназначен для разветвления процесса вы­числений на несколько направлений. Формат оператора:

switch (выражение){

case константное_выражение_l: [список_операторов_l]

case константное_выражение_2: [список_операторов_2]

case константное_выражение_п: [список_операторов_п]

[default: операторы]

}

Выполнение оператора начинается с вычисления выражения (оно должно быть целочисленным), а затем управление передается первому оператору из списка, помеченного константным выражением, значение которого совпало с вычислен­ным. После этого, если BЫXOД из переключателя явно не указан, последовательно выполняются все остальные ветви (включая defauit).

Выход из переключателя обычно выполняется с помощью операторов break или return. Оператор break выполняет выход из самого внутреннего из объемлющих его операторов switch, for, while и do. Оператор return выполняет выход из функ­ции, в теле которой он записан.

Все константные выражения должны иметь разные значения, но быть одного и того же целочисленного типа. Несколько меток могут следовать подряд. Если совпадения не произошло, выполняются операторы, расположенные после слова default (а при его отсутствии управление передается следующему за switch опе­ратору).

Пример (программа реализует простейший калькулятор на 4 действия):

#include <stdio.h>

int main() {

int а=15,b=3, res,f;

char ор;

printf("\пВведите знак операции: ");

scanf(“%с”, &ор);

f = 1:

switch (ор){

case '+': res = а + b; break;

case ': res = а – b; break;

case '*': res = а * b; break;

case ':’:

case '/’: res = а / b; break;

default: printf(“\ пНеизвестная операция"); f = 0:}

if (f) printf("\пРезультат: %d", res);

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: