C语言操作符是说明特定操作的符号,它是构造C语言表达式的工具。下面对C语言操作符做一个小小的总结:
C语言操作符具体分为算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号表达式、下标引用、函数调用和结构成员。下面一一介绍:
1.算术操作符。
算术操作符包含+ - * / %五个操作符。
除了%操作符之外,其他的几个操作符可以作用于整数和浮点数。%操作符两个操作符必须都是整数,返回的是整除之后的余数。
对于/操作符如果两个操作符都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法,即只要有一个操作数是浮点数,就执行浮点数除法。
2.移位操作符。
移位操作符包括<<(左移操作符) >>(右移操作符)。
<<操作符相当于给原操作数乘2。>>操作符相当于给原操作数除2(据情况而定)。
<<操作符的移位规则为:左边抛弃,右边补0。
>>操作符的移位规则分为两种:1、逻辑右移:左边用0填充,右边丢弃。2、算术右移:左边用原该值的符号位填充,右边丢弃。
注意:对于移位运算符,不要移动负数位,这个是标准未定义的。
3.位操作符。
位操作符包括&(按位与)、|(按位或)、^(按位异或)三种操作符。
&操作数可以判断一个数二进制序列中1的个数。具体方法是:将这个二进制序列与1进行按位与操作,进而得到最低位是否为1(如果是1,则按位与的结果为1,;如果不是1,按位与的结果为0),再将序列向右移位,再与1进行按位与判断,如此循环32次即可。
|操作符可以将二进制序列中的0置为1。具体方法是:将序列与要置1相对应这一位为1的序列进行按位或操作即可。
^操作符可以不创建临时变量,实现两个数的交换。eg:要交换a变量和b变量的值,只需a=a^b,b=a^b,a=a^b即可。
4.赋值操作符。
赋值操作符的作用是将一个表达式的值赋给一个变量。赋值操作符的右边可以使任何表达式,但左边必须是一个变量名。
赋值操作符可以连续使用,但一般不推荐,会使代码不清晰且不易调试。
5.复合赋值符。
复合赋值符包括+=、-=、*=、/=、%=、>>=、<<=、&=、\=、|=、=等操作符。
这些运算符都可以写成复合的效果。eg:x=x+10与x+=10效果是一样的。其他复合赋值符与+=用法相同。
6.单目操作符。
单目操作符包括!(逻辑反操作)、-(负值)、+(正值)、&(取地址)、sizeof(操作数的类型长度,以字节为单位)、~(对一个数的二进制按位取反)、--(前置、后置--)、++(前置、后置++)、*(间接访问操作符,解引用操作符)、(类型)(强制类型转换)等。
sizeof:
sizeof操作符可以求变量(类型)所占空间的大小。
当sizeof(数组名),数组名表示整个数组,sizeof(数组名)表示的是整个数组的大小,单位是字节。当int a =0,sizeof(a)表示一个整形变量的大小,相当于sizeof(int),输出4,即4个字节。
注意:sizeof内部的表达式是不参与运算的。
++和—运算符:
对于前置的++和—来说,运算顺序是先对变量进行自增或自减运算,然后使用变量。eg:int a=10;int x=++a;先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值,x为11。
对于后置的++和—来说,运算顺序是先对变量进行使用,再进行自增或自减运算。eg:int a=10; int x=a++;先对a使用,再增加,这样x的值是10,之后a变成11。
7.关系操作符。
关系操作符包括<、>、>=、<=、!=、==等操作符。
注意:要区分==(用于测试相等)和=(赋值操作符)。
8.逻辑操作符。
逻辑操作符包括&&(逻辑与)、||(逻辑非)两个操作符。
注意:要区分逻辑与和按位与、逻辑或和按位或。eg:1&2结果为0,1&&2结果为1。1|2结果为3,1||2结果为1。
9.条件运算符。
条件运算符的符号为exp1?exp2:exp3。它的含义是如果exp1的结果为真,则表达式的值为exp2,否则,整个表达式的值为exp3。
10.逗号表达式。
逗号表达式的符号为exp1,exp2,exp3,…expN。逗号表达式就是用逗号隔开的多个表达式。运算法则为:从左到右依次执行。整个表达式的结果是最后一个表达式的结果。
11.下标引用、函数调用和结构成员。
下标引用:
符号位[ ]。操作数为一个数组名+一个索引值。
函数调用操作符:
接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。至少会有一个操作数,即函数名。
结构成员:
访问一个结构的成员:. 结构体.成员 ->结构体指针->成员名。