C语言操作符主要分为以下几类:
算数操作符
关系操作符
逻辑操作符
移位操作符
位操作符
赋值操作符
单目操作符
条件操作符
逗号表达式
下标引用、函数调用和结构成员
接下来分别介绍下可爱的操作符们吧:
一. 算数操作符
+ - * / % ++(自加) --(自减)
1.除了“%”以外(“%”只可以作用于整型),其余的算数运算符都可以作用于浮点型和整型。
2.对于/操作符来说,如果两边的数据类型都是整型时,执行整型除法(即返回的值类型也为整型),而只要有浮点数执行的就是浮点数除法.
3.”a++“表示当程序执行到这句时,先使用”a“当前的值,然后给a加上1,再将a加上1之后的值赋给”a“。
4.”++a“表示当程序执行到这句时,先给a加上1,将此值赋给”a“,然后再使用加上1之后a的值进行运算。
一句话: a++——先使用后++
++a——先++后使用
二、关系操作符
> < 大于等于>= 小于等于<= 不等于!= 等于==
三、逻辑操作符
&&(逻辑与) ||(逻辑或)
&&——只要有一个为假,后面不用看,直接为0;
||——只要有一个为真,后面不用看,直接为1;
四、移位操作符
<<为左移操作符 >> 右移操作符
1. 左移操作符移位规则: 左边抛弃,右边补零
例如:
但实际上,num在没被赋值的情况下,自身的值不会发生变化。
2.右移运算分为两种: 逻辑移位和算术移位
移位规则:
左边用零填充,右边丢弃(逻辑移位)
左边用原该值的符号位填充,右边丢弃(算术移位)
例如:
五、位操作符
按位与 & 按位或 | 按位异或 ^
注:它们的操作数必须是证整数。
六、赋值操作符—— 可以重新赋值,包括复合赋值操作符:
= += -= *= /= %= 左移赋值<<= 右移赋值 >>= 按位与并赋值&=
按位或并赋值|= 按位异或并赋值^=
七、单目操作符 —— 只有一个操作数的运算符
(1)逻辑反操作:!
(2)取地址:&
(3)对一个数的二进制数按位取反:~
eg: a的值 10000000000000000000000000000011
~a的值11111111111111111111111111111100
(4) 正值+ 负值- 正值加号一般省略
(5)自增自减:++a, --a, a++, a--
(6)间接引用操作符(解引用):*
(7)(类型):强制类型转换
(8)操作数的类型长度(以字节为单位):sizeof
注意:sizeof不是函数;
sizeof(数组名)——表示整个数组大小
sizeof(&数组名)——表示整个数组
*只有以上两种情况的数组名表示整个数组,除此之外,之后遇到的所有数组名指的都是数组的首元
素地址。
sizeof(数组名+0)——表示数组首元素的第一个地址
八.条件操作符
格式:exp1?exp2:exp3
九、逗号表达式
格式:exp1,exp2,exp3,·····expN
逗号表达式就是用逗号隔开的多个表达式,整个表达式从左到右依次执行,整个表达式的结果就是最后一个表达
式的结果;
例如:
c=get_val;
count_val(a);
while(a>0)
{
//执行业务;
c=get_val;
count_val(a);
}
改用逗号表达式如下:
while(c=get_val,count_val(a),a>0)
{
//执行业务;
}
十、 下标引用、函数调用和结构成员
1.[]
操作数,一个数组名+一个索引值.
2.()
函数调用操作符,接受一个或多个操作数,第一个操作数是函数名,剩余的操作数就是传给函数的参数.
3.访问一个结构体的成员
. 结构体.成员名
-> 结构体指针->成员名