Унарные операции. Для унарных операций требуется только один операнд; эти операции либо префиксные, либо постфиксные. Операция sizeof имеет два варианта: префиксная операция и унарная операция.
Операция косвенной ссылки: *
Это указатель на любой тип T, кроме void. Тип результата T.
Использование:
*peЗначением выражения является переменная, адресуемая указателем pe.
Пример 1:
*ptr=c;Пример 2:
*fpe;Значением выражения является функция, адресуемая указателем fpe.
Пример 3:
fpe=*funcname;(*fpe)(arg1, arg2);Операция получения адреса: &
У этой операции тип операнда есть переменная любого типа, кроме void. Тип результата - указатель на Т.
Использование:
&vЗначением выражения является адрес переменной v.
Пример:
myptr=&n;Операция отрицания: -
Тип операнда - арифметический. Тип результата: unsigned, long, double, int.
Операция логического отрицания:!
Тип операнда - арифметический или указатель. Тип результата - int. Если операнд равен 0, то результат равен 1 и наоборот.
Пример:
if(!good) printf("not good");Операция дополнения до 1: ~
|
|
Тип операнда - интегральный. Тип результата: int, long, unsigned.
Пример:
opposite=~mask;Дополнение до единицы значения mask. Результат присваивается переменной opposite.
Операция увеличения: ++
Тип операнда - арифметический или указатель. Тип результата: int, unsigned, long, double, указатель. Значение операнда увеличивается, и становится новым значением операнда. Значение указателя увеличивается на величину указываемого объекта, значения других операндов увеличиваются на единицу.
Операция увеличения, постфиксная: ++
Тип операнда - арифметический или указатель. Тип результата: int, unsigned, long, double, указатель. Значение операнда увеличивается, но возвращается старое значение операнда. Значение указателя увеличивается на величину указываемого объекта, другие операнды увеличиваются на единицу.
Использование:
iv++Увеличение iv на 1. Значением этого выражения является значение iv до увеличения.
Пример:
j=i++;Использование:
pv++;Увеличение указателя pv на 1, так что он будет указывать на следующий объект того же типа. Значением этого выражения является значение pv до увеличения.
Пример:
*ptr++=0;Присвоить значение 0 переменной, на которую указывает ptr, затем увеличить значение указателя ptr так, чтобы он указывал на следующую переменную того же типа.