Направления программирования. История создания языка Си. Особенности языка, страница 11

В правой части указатель на некоторый тип "Т", в правой части массив этого типа. Или в левой части указатель на функцию, в правой части функция.

3.  Тип одной из частей – указатель на некоторый тип, в другой указатель на тип void.

Указатель на тип void совместим с указателями на любой тип. Но для выполнения действий указатель следует привести к типу, отличному от void.

п.7.2.Явное преобразование типов.

Исполняется с помощью операции приведения типа, имеющей следующий синтаксис:

(<имя типа>) <выражение>

1)  float r=3.5;

int i;

i=(int)r;

2)  int x=5;

float y;

а)    y=(float)x/2  результат 2.5

б)    y=(float)(x/2)  результат другой, т.к. сначало выполняется х\2àрезультат типа

int т.к. х и 2 типа int =>у=2.

п.8.Операторы.

Набор операторов языка Си содержит все операторы структурного программирования: операторы последовательного выполнения и управляющие операторы. Каждый оператор  языка Си, кроме составного, должен заканчиваться “;”.

п.8.1. Пустой оператор.

<пусто>;

Используется в тех случаях, когда по синтаксису языка требуется оператор, а по логике его не нужно выполнять. Часто используется при написании циклов, когда все действия, которые должны быть выполнены в цикле, целиком выполняются в заголовке цикла.

п.8.2.Составной оператор или блок-последовательность операторов, заключенных в{}.

{

[<объявления>]

:

[< операторы>]

:

}

Блок может содержать объявления переменных, локальных для него. Область действий таких переменных отточки объявления до конца блока.

Составной оператор не рекомендуют заканчивать “;”, поскольку  “}”' является признаком конца оператора.

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

п.8.3.оператор выражения.

Выражение становится оператором, если оно заканчивается “; “.

Пример:

х+5;  f(x);

Частный случай оператор присваивания: х++; х+=5; и т.п.

п.8.4.Условный оператор.

if (<выражение>)<оператор1>

[else<оператор2>]

Поскольку в Си отсутствует булевский тип, как самостоятельный, то в качестве условных выражений используется обычные выражения языка Си. Выражение является истинным, если оно отлично от  0 и ложным, если равно 0, т.е. условные выражения языка Си не обязательно должны содержать операции отношения.

if(a<b)     if(a)     if(!a)     if(a+b)

Выполнение условного оператора: вычисляется значение выражения, если оно истинно(т.е.=0) выполняется <оператор1>, если оно ложно(т.е. =0)выполняется <оператор2>.Если веточка else отсутствует, то выполняется оператор, следующий за if.

<Оператор1> и <оператор2> могут быть в свою очередь условными. При вложении условных операторов рекомендуется <оператор1> и <оператор2> заключать в “{}”, при их отсутствии конструкция else ассоциируется с ближайшим оператором if , в котором такая конструкция отсутствует.

#include<stdio.h>

void main(void)

{

int i=4,j=6,k=8;

if(i<k)

if(i<j)

printf(“<оператор1>\n”);

else

printf(“<оператор2>\n”);

}

else относится ко 2-ому if; программа напечатает “оператор2”

п.8.5. Оператор переключатель switch.

switch(<выражение>)

{

case<константное выражение1>:<оператор(ы)1>;     

case<константное выражение2>:<оператор(ы)2>;

:

case<константное выражение n >:<оператор(ы) n>;

[default:<оператор(ы)>]

(умолчание)

}

Выполнение: Вычисляется значение <выражения>, после чего оно начинает сравниваться с константными выражениями. При установлении соответствия выполняются операторы, следующие за соответствующим case,а далее все операторы тела switch, как бы не замечая case и default, пока не будет встречен оператор, передающий управление за тело оператора switch-break.Оператор, следующий за default выполняется, если значение <выражения> не совпало не с одним константным выражением.

Пример:

switch(ts)