Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабник по C.pdf
Скачиваний:
74
Добавлен:
01.06.2015
Размер:
876.9 Кб
Скачать

– 14 –

где допустимо только одно, например, в инициализирующем выражении оператора for; например: for(i=0,pi=&m[0];*pi!=0;i++,pi++){...};

sizeof( тип ) – определение размера типа тип в байтах; например: sizeof(char)=1, sizeof(float)=4. Размер структуры – суммарное количество байтов, занимаемое данной структурой.

sizeof( e ) – определение размера переменной e в байтах; Например:

float m[5]={1,2,3,4,5}, *pi; int a, b ,c; a = sizeof( m ); // a будет равно 20

a = sizeof( m[1] );// a будет равно 4

a = sizeof( pi ); // a будет равно 4,если указатель типа far, //или 2,если указатель типа near

(тип)e – преобразование выражения e к типу тип; например: (int)3.14 будет равно 3;

fe(e1, e2, ...) – обращение к функции fe, со списком фактических параметров

(e1, e2, ...).

3.9.ПОРЯДОК ВЫПОЛНЕНИЯ ОПЕРАЦИЙ В ВЫРАЖЕНИИ

Таблица приоритетов операций приведена ниже (табл. 2).

В языке С порядок вычисления операндов гарантирован только для операций: && и ||,

условной ?: и запятой. Для и них гарантируется, что левый операнд будет вычисляться первым.

Например: если s – указатель на символ, то в выражении (*s!='\0' && *(s+1)!='\n' && *(s+1)!='\t'), символ *(s+1) будет сравниваться с табуляцией и переводом строки, только при условии, что символ *s не равен нулевому байту.

Для других операций порядок вычисления операндов не гарантирован.

 

 

 

Таблица 2

(

)

вызов функции

слева направо

 

[

]

доступ к элементу массива

 

 

.

 

доступ к полю структуры (объединения)

 

 

->

 

доступ к полю структуры (объединения) через указатель

 

 

!

~

логическая инверсия, побитовая инверсия

справа налево

 

 

изменение знака

 

 

++ ––

увеличение, уменьшение

 

 

&

*

взятие адреса, обращение по адресу

 

 

(тип)

преобразование типа

 

 

sizeof

определение размера

 

 

*

/ %

умножение, деление, остаток от деления

слева направо

 

+

сложение, вычитание

слева направо

 

<< >>

сдвиг влево, сдвиг вправо

слева направо

 

<

<= > >=

сравнение меньше/больше

слева направо

 

== !=

сравнение равно/не равно

слева направо

 

&

 

побитовая конъюнкция

слева направо

 

^

 

побитовое исключающее ИЛИ

слева направо

 

|

 

побитовая дизъюнкция

слева направо

 

&&

 

логическая конъюнкция

слева направо

 

||

 

логическая дизъюнкция

слева направо

 

?

:

условная операция

справа налево

 

= *= /= %=

присваивание

справа налево

 

+=

-= <<=

 

 

 

>>= &= |=

 

 

 

^=

 

 

 

 

,

 

запятая

слева направо

 

© 1998 Калачев Д.П., Лутай В.Н.