Представляет собой операцию присваивания скомбинированную с другой бинарной операцией. Сначала выполняется действие, определенное бинарной операцией, а потом осуществляется присваивание:
<выражение1>+=<выражение2> эквивалентно <выражение1>=<выражени1>+<выражение2>.
- компактная запись
- сокращение времени вычисления;
п.6.5.Приаритет и ассоциативность операций.
Порядок вычислений определяется приоритетом операций. Первой выполняется операция, имеющая максимальный приоритет и т.д.. В том случае, когда подряд следуют несколько операций одного вида, то порядок их вычисления определяется ассоциативностью операций. Изменить приоритет выполнения можно с использованием скобок (). Ассоциативность слева направо означает, что первой будет выполняться операция, знак которой записывается левее остальных. Ассоциативность справа налево – аналогично, но правее.
Унарные, тернарные, операции присваивания ассоциируются справа налево, остальные слева направо.
операции
max
[ ] задание элемента массива
( ) вызов функции
. выбор поля структуры
à выделения поля структуры с наименьшим указателем
++, -- инкремент и декремент
sizeof определение размера объекта или типа в байтах
(тип) приведение к типу
~ побитовое отрицание
! логическое не
- унарный минус
& определение адреса
* обращение по адресу
*,/,%/+,- арифметические операции
<<,>> операции сдвига
<,<=,>,>=
==,!= операции отношения
& побитовое и
^ побитовое исключающее или
| побитовое или
&& логическое и
|| логическое или
?: условная операция
=,+=,-= простое и составное присваивание
, последовательное вычисление
min
п.7.Преобразование типов.
Производится либо неявно в процессе присваивания, либо явно в процессе выполнения операции приведения типа.
п.7.1.Неявное преобразование типов.
Если в выражении встречаются операнды различных типов, они приводятся к общему типу и результат, как правило, имеет этот же общий тип. Преобразование операндов осуществляется по следующим правилам:
1) Типы char, short à int;
float à double.
2) Если один из операндов имеет тип double, второй также преобразуется к типу double и результат также имеет тип double (вся плав. арифметика в Си выполняется с двойной точностью).
3) В противном случае, если один из операндов имеет тип long, то и другие преобразуются в long и результат имеет этот же тип.
4) Если операнд беззнаковый т.е.unsigned,то второй преобразуется к этому типу и результат имеет этот тип. В противном случае операнды должны быть типа int и результат имеет тип int.
5) Неявное преобразование выполняется при присваивании, тип значения, которое присваивается, преобразуется к типу переменной, получающей это значение. Это возможно в следующих случаях:
1. Тип левой части – любой арифметический тип.
Тип правой части – арифметический тип.
int i=5;
float f=4.5; i=f; f=i;
(4) (5.0)
Преобразование f в i осуществляется отбрасыванием дробной части. Преобразование double во float выполняется округлением. Преобразование длинных целых к более коротким <intàchar> - отбрасываются лишние старшие биты.
1. Тип левой части –любой тип указателя. В правой части - целочисленная константа 0, NULL.
2. Тип левой части - указатель на какой-либо тип, в правой части – объект соответствующего типа.
Частные случаи:
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.