C语言操作符是说明特定操作的符号,是构造C语言表达式的工具,除基本的算术、逻辑、关系运算符之外,还有一些较为特殊的操作符,如位操作符等。现在对C语言操作符进行一个大体的概括:
一、算术运算符
算术运算符除了包括“+、—、*、/“四种基本的运算之外还有”%(取模)、++(自增运算)、- -(自减运算)”三种运算符。其具体使用方法如下:
+:两个数相加;
- :两个数相减;
*:两个数相乘;
/ :两个数相除,取整数为最终结果;
%:两个整数相除,取其余数为最终结果;
对于自增运算符“++”和自减运算符“- -”来说,它们只能用于变量,不能用于常量或表达式,且又分为前置自增、后置自增,前置自减、后置自减,假设有一变量i,在程序中,i++是先使用i之后对i进行加1,++i是使用i之前先进行加1,对于“- -”来说也是一样的使用方法。例如:
i=3;
printf("%d",i++);//输出的值之为3;
改为:printf("%d",++i);//输出值为4;
二、逻辑运算符
C语言支持所有的关系逻辑运算符,逻辑运算符包括:“ && ”、“ || ”、“ ! ”。
“ && ”(逻辑与):对于两个变量逻辑与来说,如果都为真,则值为真,当至少有一个为0时,则值为假;
“ || ”(逻辑或):对于两个变量逻辑或来说,如果都为假,则值为假,当至少有一个为1时,则值为真;
“ ! ”(逻辑非):假设有变量A=1,那么!A=0,若A=0,那么!A=1。
三、关系运算符
C语言支持所有的关系运算符,假设有两个变量m=1,n=2,具体如下:
“==”(等于):检查两个数的值是否相等,若相等则条件为真,例:m==n,不为真;
“ != "(不等于):判断两个数的值不相等,若不相等则条件为真,例:m!=n,为真;
">":判断左操作数的值是否大于右操作数,若大于则条件为真,例:m>n,不为真;
"<":判断左操作数的值是否小于右操作数,若小于则条件条件真,例:m<n,为真;
“>=”:判断左操作数的值是否大于等于右操作数,若大于等于则条件为真,例:m>=n,为假;
“<=”:判断左操作数的值是否小于等于右操作数,若小于等于则条件为假,例:m<=n,为真。
四、位运算符
位运算符作用于位,并逐位进行操作,假设有两个变量m,n,其中m=60,其二进制为:0011 1100;n=13,二进制为:0000 1101,具体如下:
“&”:存在两个操作数,对它们的二进制逐位进行按位与操作,若都为1则值为1,若至少存在一个0则值为0;
” | “:存在两个操作数,对它们的二进制逐位进行按位或操作,若都为0则值为0,若至少存在一个1则值为1;
“ ^ ”:存在两个操作数,对它们的二进制逐位进行按位异或操作,若同为1或同为0,则值为0,若不相同则值为1;
“ ~ ”:叫做二进制补码运算符,这是一元操作符,对一个数的二进制逐位进行取反;
例:m&n=0000 1100
m| n =0011 1101
m^n =0011 0001
~m=1100 0011
除上述的四种外,位运算符还有"<<"(左移运算符) 、">>"(右移运算符):
"<<":对m进行左移,m的值不变,结果发生变化;
">>":对m进行右移,m的值不变,结果发生变化,右移分为(1):算术右移:向右边移动指定位数,左边补符号位,正数补0,负数补1;(2)逻辑右移:向右边移动指定位数,左边补0;
例:m<<2结果为1111 0000,即240,它是对m的二进制序列进行左移两位,然后在右边补0;(可看出左移一位有*2的作用)
m>>2结果为0000 1111,即15,它是对m的二进制序列进行右移两位,然后在左边补符号位;(可看出右移一位有/2的作用,但这是对于整数而言)
五。赋值运算符
假设变量m、n、k:
“=”:赋值运算符,把右边的值赋给左边,如m=n,既是把n的值赋给m;
“+=”:相加且赋值,如m+=n,既是m=m+n,把m+n的值赋给m;
“-=”;相减且赋值,如m-=n,既是m=m-n,把m-n的值赋给m;
“*=”:相乘且赋值,如m*=n,既是m=m*n,把m*n的值赋给m;
“/=”:相除且赋值,如m/=n,既是m=m/n,把m/n的值赋给m;
“%=”:相模且赋值,如m%=n,既是m=m%n,把m%n的值赋给m;
“<<=":进行左移后赋值,如m<<=2,既是m=m<<2;
">>=":进行右移后赋值,如m>>=2,既是m=m>>2;
"&=":进行按位与后赋值;
"|=":进行按位或后赋值;
"^=":进行按位异或后赋值。
六、除了上述所列举的运算符之外,还有一些重要的运算符:sizeof(),&,->,*,? : ,(类型)
sizeof:返回变量的大小,如a为整数,那么sizeof(a)=4;
&:给出变量的实际地址,如&a,就是给出a的实际地址;
*:间接访问操作符,指向一个变量,如*a;
? : :这是一个三目运算符,其使用方法为:表达式1?表达式2:表达式3,若式1为真则执行式2,为假则执行式3;
(类型):强制类型转换符;
->:这是一个整体,用于指向结构体,若我们在c语言中定义了一个结构体,然后声明一个指针指向这个结构体,那么要用指针结构体中的数据,此时就要用到->;
逗号表达式:即一个语句中有多个表达式,那么是以一个表达式的值为最终结果。
上述就是在C语言学习中会用到的操作符的概括,对于多个操作符同时出现在一个语句中时,优先级较高的会先进行运算。