8.C语言操作符详解

8.1算术操作符

+   -   *    /    %

1.除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。

2.对于 / 操作如果两个操作数都为整数,执行整数除法,而只要有浮点数执行的就是浮点数除法。

3.%操作符的两个操作数必须为整数,返回的是整除之后的余数。

8.2移位操作符

<<  左移操作符

>>  右移操作符

移动的是二进制位,

000000000  000000000  000000000  000000000

1.算术右移

右边丢弃,左边补原符号位

2.逻辑右移

右边丢弃,左边补0

eg:

右移

int main()

{

int a = -1;

//内存中存的是补码

//10000000 00000000 00000000 00000001  -  原码

//111111111 111111111 111111111 111111110  -  反码

//111111111 111111111 111111111 111111111  -  补码

//算术移位

//11111111  11111111  11111111  11111111

int b=a>>1;

printf("%d\n",b);

return 0;

}

左移操作符

左边丢弃,右边补0

左移(右边补0)

int main()

{

int a =5;

int b =a<<1;

//00000000  00000000  00000000  00000101(正数原反补相同)

//00000000  00000000  00000000  00001010(右边补0)

}

8.3位操作符

&  //按位与

|   //按位或

^  //按位异或

操作数必须是整数

int main()

{

int a = 3;

int b = 5;

//int tmp = 0;//临时变量

//tmp = a;

//a = b;

//b = tmp;

//加减法-可能会溢出

//a=a+b;

//b=a-b;

//a=a-b;

//异或的方法

//a=a^b;

//b=a^b;

//a=a^b;

//第一次异或后中的,1对应的1,0,并且一个是1,另一个就是0;第一次异或中的0,说明两个数中这一位相同,所以不影响。

return 0;

}

8.4赋值操作符

=

8.5复合赋值符

+=

*=

-=

/=

%=

>>=

<<=

&=

|=

^=

8.6单目操作符

!逻辑反

-负值

+正值

&取地址

sizeof操作数类型长度(以字节为单位)

~对一个数的二进制按位取反

- - 前置,后置- -

++前置,后置++

*间接访问操作符(解引用操作符)

(类型)强制类型转换

8.7逻辑操作符

&&               逻辑与

| |                 逻辑或

8.8逗号表达式

exp1,exp2,exp3,expn

从左往右依次执行,整个表达式是最后一个表达式的结果。