您的位置:首页 > 编程语言 > C语言/C++

C语言操作符总结

2018-03-31 10:28 597 查看
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.下标引用、函数调用和结构成员。下标引用:符号位[ ]。操作数为一个数组名+一个索引值。函数调用操作符:接受一个或多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。至少会有一个操作数,即函数名。结构成员:访问一个结构的成员:. 结构体.成员   ->结构体指针->成员名。   
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: