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

C语言的操作符

2017-11-23 15:42 99 查看

C语言—操作符

操作符:顾名思义就是进行一些特定运算的符号,比如:+ - * /

分类

算术操作符

移位操作符

位操作符

赋值操作符

单目操作符

关系操作符

逻辑操作符

条件操作符

逗号表达式

下标引用、函数调用和结构成员

00.算术操作符

+ - * / %

加减乘法都和数学里的一样

除法,如果除号两边都是整数,结果也是整数,例如:7/2=3

如果除号两边有浮点数,则结果也是浮点数,例如:10/2.5=4.0

取余操作符%,两边必须为整数,结果也是整数,例如:7%3=1,意为7除以3余1

01.移位操作符

左移操作符 <<

右移操作符 >>

移位操作符是针对一个数的二进制序列而言的

左移规则:左边丢弃,右边补0

例如:0101 0110 左移1位 变成1010 1100

右移规则:分为两种

1.算术右移:右边丢弃,左边用原值符号位填充

例如:1001 0010 算术右移1位 变成1100 1001

ps:大多数编译器都采用算术右移

2.逻辑右移:右边丢弃,左边补0

不能移动负数位

02.位操作符

按位与 &

按位或 |

按位异或 ^

位操作符的操作数必须为整数

按位与运算符“&”是双目运算符。其功能是参与运算的两数各对应的二进位相与。规则为:

1&1=1

1&0=0

0&1=0

0&0=0

按位或“|”,规则为:

1 | 1 = 1,

1 | 0 = 1,

0 | 1 = 1

0 | 0 = 0

按位异或“^”,规则为:

1 ^ 1 = 0

1 ^ 0 = 1

0 ^ 1 = 1

0 ^ 0 = 0

位操作符都是针对二进制序列的补码操作

03.赋值操作符

赋值操作符 =

就是将一个值赋给一个变量,例如a=0 就是将0赋给了a

复合赋值符:



例如a+=2 就相当于 a=a+2 以此类推

04.单目操作符



注:

int* p = NULL; //这里的*不是解引用操作符
*p = 20;//这里的*才是解引用操作符


a=i++表示先把 i 的值赋给a,然后 i 再加1;a=++i 表示 i 先加1,再赋值给a

sizeof(arr)/sizeof(arr[0]) 表示求一个数组的元素个数

取地址 &数组名—数组名表示整个数组–这里取出的是整个数组的地址

除此之外,所有的数组名都表示数组首元素的地址

05.关系操作符

大于 >

小于 <

大于等于 >=

小于等于 <=

不等于 !=

判断是否相等 ==

if(5 == a)//这里将常量写在操作符左边,可以避免因为少写一个等号而出错


06.逻辑操作符



逻辑与&& ,0为假,非0为真,例如:5&&0=0

逻辑或||,例如:5||0=1

07.条件操作符

exp1 ? exp2 : exp3

意为:如果表达式1为真,执行表达式2,否则执行表达式3

08.逗号表达式

exp1,exp2,exp3,……expn

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。整个表达式的结果是最后一个表达式的结果。

09.下标引用、函数调用和结构成员

[ ] 下标引用

例如arr[1] 表示arr数组的第一个元素

() 函数调用操作符

接受一个或者多个操作数:第一个操作数是函数名,剩余的操作数就是传递给函数的参数。

. -> 访问一个结构的成员

结构体 . 成员名

结构体指针 -> 成员名

第一次写总结,还有很多不完善的地方,欢迎批评指正。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: