标签:
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
运算符
运算符是告诉编译程序执行特定算术或逻辑操作的符号。
运算符的优先级表:
注:同一优先级的运算符,运算次序由结合方向所决定。
一、算术运算符
算术运算符就是我们所学的加减乘除。如下表:
算术运算表达式的结果依据赋值对象的类型而变。
二、赋值运算符
赋值运算符分两种:简单赋值运算符 和 复合赋值运算符。
1.简单赋值运算符
简单赋值运算符记为“=”,由“= ”连接的式子称为赋值表达式。其一般形式为:
变量=表达式
int a=3;
int a=3,b=9; int x; x=(a=5)+(b=8);
2.复合赋值运算符
在赋值符“=”之前加上其它二目运算符可构成复合赋值符,先运算后赋值。
构成复合赋值表达式的一般形式为:
变量 双目运算符=表达式
它等效于
变量=变量 运算符 表达式
三、自增、自减运算符
自增1运算符记为“++”,其功能是使变量的值自增1;自减1运算符记为“--”,其功能是使变量值自减1,计算遵循右结合。
自增和自减运算情况一样,在这里以自增为例:
1.++a 求值:先让a的值加1,再取a变化后的值作为表达式的值。
口诀:先变后用。
如:int a=3;
int c=++a;
输出结果为:a的值为4,c的值为4。
2.a++ 求值:先把a的值赋值给表达式,在把a的值加1。
口诀:先用后变。
如:int a=3;
int c=a++;
输出结果为:a的值为4,c的值为3。
注意:1)++a,a++最终a的值都会加1。
2)只能用于变量,如4++,这样是错误的。
四、sizeof
sizeof(单目运算符):以字节形式给出其操作数的存储大小。操作数可以是表达式、常量、变量及括在括号内的类型名。
格式:sizeof(操作数)
注意:sizeof用在常量和变量的时候,是可以省略括号的,用在计算数据类型时不可省略的。
五、逗号运算符
在C语言中逗号“,”也是一种运算符,称为逗号运算符。 其功能是把两个表达式连接起来组成一个表达式, 称为逗号表达式。计算遵循左结合,其一般形式为:
表达式1, 表达式2,...,表达式n
求值:分别求多个表达式的值,并以末尾的表达式的值作为整个逗号表达式的值。
#include <stdio.h>
int main(void){
int a=2,b=4,c=6,x,y;
y=(x=a+b,b+c);
printf("y=%d, x=%d \n",y,x);
return 0;
}
运行结果:
y=10, x=6
注意:
1.逗号运算符可以嵌套使用。(++a,(c=b=c,a+b,b+3))。
2.在定义变量时,所出现的“,”并不是逗号表达式。
六、三目运算符
格式:表达式1?表达式2:表达式3;
运算过程:当表达式1为真时,表达式2的值作为整体的值,否则,表达式3为整体的值。
七、关系运算符
在程序中经常需要比较两个量的大小关系,以决定程序下一步的工作。比较两个量的运算符称为关系运算符。计算遵循左结合。
在C语言中有以下关系运算符:
关系表达式的格式:
表达式 关系运算符 表达式
关系表达式的值是“真”和“假”,用“1”和“0”表示。
八、逻辑运算符
C语言中提供了三种逻辑运算符:
“&&”和“||”低于关系运算符,“!”高于算术运算符。
格式:表达式 逻辑运算符 表达式
运算结果:真(1)和假(0)。
逻辑运算符的短路问题:
int a=0,b=0,c=-1;
c=a&&n++;//a=0,b=0,c=0
由于&&是左结合,计算机从左开始编译。尽管++比&&优先,但是计算机先读取a=0,&&之后的b++就不执行了。
九、位运算符
位运算就是用于整数的二进制位之间的运算。
C语言提供了六种位运算符:
& 按位与
格式:整数a & 整数b 功能:俩个操作数同1则结果为1,有0则为0
| 按位或
格式:整数a | 整数b 功能:俩个操作数有1则结果为1,同0则为0
^ 按位异或
格式:整数a ^整数b 功能:俩个操作数相同位为0,不同位为1
~ 取反
格式:~整数a 功能:1位变0,0位变1
<< 左移
格式:整数a<<正数n 功能:把整数a的各二进位全部左移n位,高位丢弃,低位补0。
>> 右移
格式:整数a>>正数n 功能:把整数a的各二进位全部右移n位,地位丢弃,高位保持符号位不变的同时补0。
左移可用于计算一个数乘以2的N次方,右移可用于计算一个数除以2的N次方。
位运算符的应用:1.任何数和1进行&操作,将得到这个数的最低位。最低位为0则为偶数,为1则为奇数。
2.把第i为变为0,用&操作,
如:0000 0000 0000 0000 0000 0000 0000 0i01
& 1111 1111 1111 1111 1111 1111 1111 1011
3.俩个变量的交换。
1)引入第三变量;
2)int a=5,b=6;
a=a+b;
b=a-b;
a=a-b;
3)int a=4,b=5;
a=a^b;
b=a^b;
a=a^b;
标签:
原文地址:http://www.cnblogs.com/YjAdair/p/4514849.html