操作符与表达式

《C与指针》读书笔记
1.操作符
1.1算术操作符
+ - * / %
1.2 移位操作符
<< : 左移位,值最左边的几位被丢弃,右边多出来的几个空位用0补齐。
>> : 右移位有两种方案
(1)逻辑移位
左边移入的位用0填充。
(2)算术移位
左边移入的位由原来的符号位决定,符号位为1则移入的为均为1,符号位为0则移入的符号位均为0。
1.3 位操作符
&:AND操作 两个位都是1,结果为1,否则结果为0。
|: OR操作 两个位都是0,结果为0,否则为1。
^: XOR操作 如果两个位不同,结果为1,两个位相同,结果为0。
1.4 赋值
赋值操作符,用一个“=”表示。
x = y + 3;
赋值操作符的结合性是从右到左。
a = x = y + 3;
相当于:
a = (x = y + 3);
复合赋值符
+= -= *= /= %=
<<= >>= &= ^= |=
a += expression
相当于
a = a + expression
其他情况以此类推。
1.5 单目操作符
! ++ - & sizeof
~ -- + * (类型)
! : 执行逻辑反操作,如果操作数为真,其结果为假。如果操作数为假,其结果为真。这个操作符实际上 产生的一个整形结果:0,1。
~ : 对整形类型的操作数进行求补操作,操作数原先为1的位变成0,原先为0的位变为1。
- : 产生操作数的负值
+ : 产生操作数的值
& : 产生操作数的地址。
* : 间接访问操作符,它与指针一起使用,用于访问指针所指向的值。
sizeof : 判断操作数的类型长度
(类型) :强制类型转换
1.6 关系操作符
用于比较操作数之间的各种关系,产生的结果是整形值:0,1。
> >= < <= != ==
1.7 逻辑操作符
&& ||
&& : expression1 && expression2
如果expression1和expression2的值都是真,那么整个表达式为真,否则为假。
|| : expression1 || expression2
如果expression1和expression2的值有一个为真,那么整个表达式为真,否则为假。
1.8 条件操作符
expression1 ? expression2 : expression3
如果表达式expression1为真,整个表达式的值就是expression2的值,否则就是expression3的值。
1.9 逗号操作符
expression1,expression1,...,expressionN
逗号操作符把两个或两个以上的表达式分隔开来。这些表达式从左到右逐个进行求职,整个表达式的值就是最后那个表达式的值。
while(a = get_value(),count_value(),a > 0){
...
}
1.10 下标引用、函数调用、结构成员
下标引用:下标引用接受两个操作数,一个数组名,一个索引值。除了优先级不同之外,下标引用操作和间接访问表达式是等价的。
array[index] ==> *(array + index)
函数调用:函数操作符接受一个或多个操作数。它的第一个操作数是你希望调用的函数名,剩余的操作数就是传递个函数的操作数。
结构成员:如果s是个结构变量,a是s的成员。用s.a对结构成员进行访问。如果s是指向结构的指针,则使用->操作符对结构成员进行访问。
2 .布尔值
C并没有布尔值,所以使用整数来代替。其规则是:
零是假,任何非零值皆为真。
3. 左值与右值
左值就是那些能够出现在赋值符号左边的东西。右值就是那些可以出现在赋值符号右边的东西。
a = b + 25;
a是个左值,因为它标识了一个可以存储结果的地点,b + 25是个右值,因为它指定了一个值。如果互换:
b + 25 = a;
原先用作左值的a此时也可以当作右值,因为每个位置都包含一个值。然而,b + 25不能作为一个左值,因为它并未标识一个特定的位置。
4 操作符优先级
优先级 运算符 名称或含义 使用形式 结合方向 说明
1 后置++ 后置自增运算符 变量名++ 左到右  
后置-- 后置自减运算符 变量名--  
[ ] 数组下标 数组名[整型表达式]  
( ) 圆括号 (表达式)/函数名(形参表)  
. 成员选择(对象) 对象.成员名  
-> 成员选择(指针) 对象指针->成员名  
2 - 负号运算符 -表达式 右到左 单目运算符
(类型) 强制类型转换 (数据类型)表达式  
前置++ 前置自增运算符 ++变量名 单目运算符
前置-- 前置自减运算符 --变量名 单目运算符
* 取值运算符 *指针表达式 单目运算符
& 取地址运算符 &左值表达式 单目运算符
! 逻辑非运算符 !表达式 单目运算符
~ 按位取反运算符 ~表达式 单目运算符
sizeof 长度运算符 sizeof 表达式/sizeof(类型)  
3 / 表达式/表达式 左到右 双目运算符
* 表达式*表达式 双目运算符
% 余数(取模) 整型表达式%整型表达式 双目运算符
4 + 表达式+表达式 左到右 双目运算符
- 表达式-表达式 双目运算符
5 << 左移 表达式<<表达式 左到右 双目运算符
>> 右移 表达式>>表达式 双目运算符
6 > 大于 表达式>表达式 左到右 双目运算符
>= 大于等于 表达式>=表达式 双目运算符
< 小于 表达式<表达式 双目运算符
<= 小于等于 表达式<=表达式 双目运算符
7 == 等于 表达式==表达式 左到右 双目运算符
!= 不等于 表达式!= 表达式 双目运算符
8 & 按位与 整型表达式&整型表达式 左到右 双目运算符
9 ^ 按位异或 整型表达式^整型表达式 左到右 双目运算符
10 | 按位或 整型表达式|整型表达式 左到右 双目运算符
11 && 逻辑与 表达式&&表达式 左到右 双目运算符
12 || 逻辑或 表达式||表达式 左到右 双目运算符
13 ?: 条件运算符 表达式1? 表达式2: 表达式3 右到左 三目运算符
14 = 赋值运算符 变量=表达式 右到左  
/= 除后赋值 变量/=表达式  
*= 乘后赋值 变量*=表达式  
%= 取模后赋值 变量%=表达式  
+= 加后赋值 变量+=表达式  
-= 减后赋值 变量-=表达式  
<<= 左移后赋值 变量<<=表达式  
>>= 右移后赋值 变量>>=表达式  
&= 按位与后赋值 变量&=表达式  
^= 按位异或后赋值 变量^=表达式  
|= 按位或后赋值 变量|=表达式  
15 , 逗号运算符 表达式,表达式,… 左到右 从左向右顺序运算


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值