Группа унарных операций

Знак операции Операция
- Арифметическое отрицание
~ Поразрядное логическое отрицание (дополнение)
! Логическое отрицание
* Разадресация
& Адрес
+ Унарный плюс
Sizeof Размер
++ -- Операции единичного приращения

Операции разадресации и адреса используются для работы с переменными типа указатель.

Операция ”адрес” (”&”) дает адрес своего операнда.

Операция разадресации (”*”) осуществляет косвенный доступ к адресуемой величине через указатель. Операнд должен быть указателем. Результатом операции является величина переменной, на которую указывает операнд.

Операция * — операция обращения по адресу (не знаем адрес, но обращаемся к нему).

Пример:

int x, y =10, *address;

address=&x;

*address=y;

printf(“y=%d x=%d”,y,x);

Операции единичного приращения:

++ – приращение положительно (инкремент).

-- – приращение отрицательно (декремент).

Операции увеличения (++) и уменьшения (--) являются унарными операциями присваивания. Они соответственно увеличивают или уменьшают значение операнда на единицу.

Операнд должен быть:

1. Целого типа.

2. Плавающего типа.

3. Адрес (указатель).

Для целого и плавающего типа увеличение или уменьшение происходит на "1".Операнд адресного типа увеличивается или уменьшается на размер объекта, который он адресует.

Существует две формы:

1. Префиксная — сначала приращение, потом действие.

2. Постфиксная — сначала действие, потом приращение.

Пример:

#include<stdio.h>

#include<windows.h>

int main()

{

int a,b,c,d,r,s;

float g,f,h;

char *pChar;

int *pInt;

a=b=1;

s=a+b++;

printf("a=%d b=%d s=%d\n",a,b,s); // a=1 b=2 s=2

c=d=3;

r=c+ ++d;

printf("c=%d d=%d r=%d\n",c,d,r); // c=3 d=4 r=7

c=d=3;

r=c+++d;

printf("c=%d d=%d r=%d\n",c,d,r); // c=4 d=3 r=6

c=d=3;

r=c+++d++;

printf("c=%d d=%d r=%d\n",c,d,r); // c=4 d=4 r=6

c=d=3;

r= --c+d++;

printf("c=%d d=%d r=%d\n",c,d,r); // c=2 d=4 r=5

g=3.5;

f=4.2;

h=++g+--f;

printf("g=%f f=%f h=%f\n",g,f,h); // c=4.5 f=3.2 h=7.7

char cChar='a';

pChar=&cChar;

printf("cChar=%c, pChar=%p cChar=%c pChar=%p\n",cChar,&cChar,*pChar,pChar);

cChar++;

pChar=&cChar;

printf("cChar=%c cChar=%p \n",cChar,&cChar);

// Поразрядное логическое отрицание (дополнение)

unsigned char cVar1=140,cVar2;

cVar2=~cVar1;

printf("cVar1=%d\tcVar2=%d\n",cVar1,cVar2); // 140 115

printf("cVar1=%c\t\tcVar2=%c\n",cVar1,cVar2); // M s

return 0;

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: