操作符总结
分类:算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、函数调用和结构成员。
一. 算术操作符
生活当中常见的运算符号,其中%是取模。
+ - * / %
注意事项:1.除了%操作符之外,其他的操作符都是可以作用于整数和浮点数;
. 2.对于 / 操作符,假如两个操作数都是整数则执行整数除法,但凡有一个
. 操作数为浮点类型,则执行浮点数除法;
. 3.%操作符的两个操作数都必须是整数。返回值为整数之间相除的余数。
举例:
printf("%d ,",10%3);
printf("%d ,",-10%3);
printf("%d ,",10%-3);
printf("%d ,",-10%-3);
--------------------------------------------------------
输出结果为:
1 ,-1 ,1 ,-1 ,
二. 移位操作符
<< 左移操作符 >> 右移操作符
说明:计算机位运算速度大于数学基础运算速度
1.左移操作符
移位规则:二进制序列最高位抛弃,其他位向前移一位,最低位补0。
<< 对于操作数来说相当于乘法,所移动的位数就是所乘的倍数。如果将一个数扩大八倍就会使用到左移操作符,“x<<8”。
2.右移操作符
右移操作符分为两种情况: (采用哪种方式由编译器决定,基本上都采用算术移位。 )
1.逻辑移位:左边用0填充,右边丢弃;
2.算术移位:左边用该值的符号位填充,右边最低位丢弃。
>> 右移操作符的算术移位对于操作数来说相当于除法,所移动的位数就是被除数。如果要将某个数缩小8倍就可以使用到右移操作数,“x>>8”。注意:对负数使用右移操作符没有任何的意义(负数的符号位为1,右移之后高位补充“1”)。
注意:对于算术运算符最好不要移动负数。
小技巧:在操作数组,就可以通过右移操作符来确定数组的中间值,“mid=(left+right)>>1”。
三. 位操作符
& 按位与 | 按位或 ^ 按位异或
它们所操作的数都必须是整数!!!
位上分别为“0”,“1”情况如下:
操作符 (?) | “&”(与操作符) | 或操作符 | “^”(异或操作符) |
---|---|---|---|
0 ?0 | 0 | 0 | 0 |
0 ?1 | 0 | 1 | 1 |
1 ?1 | 1 | 1 | 0 |
例子1:不创建临时变量,交换两个数的值。
#include <stdio.h>
int main()
{
int a = 10;
int b = 20;
a = a^b;
b = a^b;
a = a^b;
printf(" a = %d , b = %d \n",a,b);
return 0;
}
----------------