sizeof – это унарный оператор, возвращающий длину в байтах переменной или типа, помещённого в скобки. Например:
float f;
printf(“%f ”, sizeof f);
printf(“%d”, sizeof(int));
выдаёт 4 4. (Предполагается использование 32-битных целых).
Выражения в С – это любая допустимая комбинация операторов, констант и переменных.
Преобразования типов в выражениях.
Компилятор преобразует все выражения к типу большего операнда.
1. Все переменные типа char short int преобразуются к типу int. Все переменные типа float – к типу double.
2. Если один из пары операндов имеет тип long double, другой операнд также преобразуется к типу long double. Иначе, если один из операндов имеет тип double, другой операнд также преобразуется к double. Иначе, если один из операндов имеет тип long, другой операнд также преобразуется к типу long. Иначе, если один из операторов имеет тип unsigned, другой операнд также преобразуется к типу unsigned.
Большинство операторов управления программой основываются на проверке условий, определяющих, какого рода действие необходимо выполнить. В результате проверки условий можно получить истину или ложь. В С истине соответствует любое ненулевое значение, лжи соответствует ноль.
С поддерживает два типа оператора выбора: if и switch. Кроме того, оператор ? является иногда альтернативой if.
Синтаксис полной формы условного оператора:
if ( логическое выражение ) оператор1;
else оператор2;
Если логическое выражение истинно, т.е. не равно нулю, то выполняется оператор1, иначе выполняется оператор2.
Синтаксис сокращенной формы условного оператора:
if ( логическое выражение ) оператор;
Оператор выполняется только в том случае, если логическое выражение не равно нулю, т.е. истинно.
Под логическим выражением понимается совокупность операций отношений и логических операций.
Часто, каждая из альтернативных возможностей оператора if требует выполнения более одного оператора. В этом случае необходимо заключить группу операторов в фигурные скобки { }.
Список операторов, заключенный в фигурные скобки, называется блоком.
Лесенка if-else-if
Типичной программной конструкцией является лесенка if-else-if. Она выглядит следующим образом:
if(выражение)
оператор;
else if(выражение)
оператор;
else if(выражение)
оператор;
…
else
оператор;
Условия вычисляются сверху вниз. Когда обнаруживается истинное условие, то выполняется оператор, связанный с этим условием, а остальная часть конструкции игнорируется. Если не найдено ни одного истинного условия, выполняется оператор, соответствующий последнему else.
switch
Синтаксис оператора switch:
switch (выражение)
{
case константное выражение: оператор или группа операторов;
break;
case константное выражение: оператор или группа операторов;
break;
case константное выражение: оператор или группа операторов;
break;
. . . . . . . .
defaulf: оператор или группа операторов;
};
Результат вычисленного выражения сравнивается с каждым из константных выражений. Если находится совпадение, то управление передается оператору, связанному с данным case. Исполнение продолжается до конца тела оператора switch или пока не встретится оператор break, который передает управление из тела switch оператору, следующему за switch. Оператор или группа операторов, стоящий после default, выполняется, если выражение не соответствует ни одному из константных выражений в case.
Константные выражения должны быть целого или символьного типа. Если нескольким константным выражениям соответствует один и тот же оператор, то возможна следующая запись:
switch (выражение)
{
case константное выражение:
case константное выражение:
case константное выражение: оператор или группа операторов;