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;
}