The Story about C 操作符

2018年4月6日

今天我们来讨论讨论C语言中的操作符。

(1)算数操作符

+ - * / %(加减乘除取模)

加减乘除适用于计算浮点和整数类型,取模只适用于计算整数类型。

需要注意的是当/除法操作符的两个操作数都是整数的时候执行整除,如果存在浮点数执行浮点数除法。

%取模是返回两个整数做除法运算的余数。

(2)移位操作符

<<  >>  (左移和右移)

移位操作符对数据执行位运算(二进制)。

向左或向右移动n位(n为整数且n>=0),除算数移位外空出来的位置都用0补齐。

算数移位只存在于右移,空出来的位置由符号位决定,符号位为0填入0,符号位为1填入1。

例如:1001010>>2

逻辑移位结果:0010010

算数移位结果:1110010

C89标准说明无符号数执行的都是逻辑移位,但有符号数取决于编译器。(可移植性)

(3)位操作符

& | ^(与 或 异或)

对整形类型操作数的每一位进行操作。

^或操作符可以进行简单的数据加密。(C=A^B,A=C^B,B=C^A)

(4)赋值操作符

=(赋值)

+=  -=  *=  /=  %=  <<=  >>=  &=  ^=  |=(复合赋值)

只要允许出现表达式的地方都允许进行赋值。

a+=expression相当于a=a+(expression)。(注意括号)

把右值赋给左值,左值必须为可修改的数据类型。

复合操作符的优点是使代码更容易阅读和书写。

(5)单目操作符

!  ~  ++    --  +  -  &  *  sizeof  (类型)

需要注意的是~操作符是对整形类型的操作数进行求补操作(按位取反)。

&操作符返回类型的是一个指针类型,返回的值为地址。

sizeof操作符返回操作数的类型长度,以字节为单位。

sizeof (a),sizeof(int),sizeof a,sizeof int(错误)。

注意sizeof判断表达式的长度并不需要对表达式进行赋值。

sizeof(a=b+1)并不会改变a的值。

(类型)操作符为强制类型转换

int a=1;double d=(double)a;只是在使用a时把a看做double类型但并不会改变a的类型int。

++和--都具有前缀和后缀形式,在单独进行自加自减的时候建议用前缀形式。

注意++和--的操作数必须为一个左值,也就是可以修改的数据类型。

但是++和--不能出现在赋值操作符的左边。

(6)关系操作符

>  >=  <  <=  !=  ==

操作符产生的结果为整形值1和0(布尔类型在C99之后才添加)。

在if和while中,表达式的结果0为假,非0为真。

但并不建议把if(a!=0)简写为if(a)。

注意建议把if(a==0)写为if(0==a)。

(7)逻辑操作符

&&   ||   (逻辑与  逻辑或)

注意当&&左边表达式为假或者当||左边的表达式为真时,不会再对右边的表达式进行计算。

注意逻辑操作符与位操作符的区别。

(8)条件操作符

expression1?expression2:expression3

如果表达式1的结果为真,返回表达式2的结果;如果表达式1的结果为假,返回表达式2 的结果。

(9)逗号操作符

返回的是最右边的表达式。

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

array[i];

strcpy(s1,s2);

p->next;

先简单了解一下。

欢迎并感谢大家在下面留言交流看法。


作者小丿萝卜,来自美丽的大重庆。

我的C故事系列主要写我在C中发现的有趣的代码或者算法。

如果大家觉得我的分享对大家学习了解C有一点点帮助,欢迎关注我的博客。

我的联系方式:微信:zhongdaidongzdd    QQ:1161665939。欢迎一起交流编程知识。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值