【《C和指针》阅读笔记】Chapter5 Operators and Expressions

本文详细介绍了C语言中的各种操作符,包括算数操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符、条件操作符、逗号操作符以及表达式求值的相关规则,深入理解这些操作符对于C语言编程至关重要。
摘要由CSDN通过智能技术生成

操作符

算数操作符

  C提供了所有常用的算数操作符:

+       -       *       /       %
  • 除了%操作符,其余几个操作符都是既适用于浮点类型又适用于整数类型。
  • 当/操作符的两个操作数都是整数时,它执行整除运算,在其他情况下则执行浮点数除法。
  • %为取模操作符,它接受两个整型操作数,把左操作数除以右操作数,但它返回的值时余数而不是商。

移位操作符

  移位操作知识简单地把一个值的位向左或向右移动。

  • 在左移位中,值最左边的几位被丢弃,右边多出来的几个空位则由0补齐。
  • 右移位操作存在一个左移位操作不曾面临的问题:从左边移入新位时,可以选择两种方案。一种是逻辑移位,左边移入的位用0填充;另一种是算数移位,左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样能够保持原数的正负形式不变。
  • 算数左移和逻辑左移是相同的,它们只在右移时不同,而且只有当操作数是负值时才不一样。
  • 左移位操作符为<<,右移位操作符为>>

位操作符

  位操作符对它们的操作数的各个位执行AND、OR和XOR(异或)等逻辑操作。
  位操作符有:

&           |           ^
  • 它们分别执行AND、OR和XOR操作。它们要求操作数为整数类型,它们对操作数对应的位进行指定的操作,每次对左右操作数的各一位进行操作。

赋值

  赋值用一个等号表示。

  • 赋值操作符的结合性(求值的顺序)是从右到左,所以下面这三个表达式是等价的:
a = x = y + 3;

a = ( x = y + 3);

x = y + 3;      a = x;

复合赋值符
  到目前为止所介绍的操作符都还有一种复合赋值的形式:

+=      -=      *=      /=      %=
<<=     >>=     &=      ^=      |=

  以+=操作符为例,其用法如下:

a += expression

  它的功能相当于下面的表达式:

a = a +expression

单目操作符

  C具有一些单目操作符,也就是只接受一个操作数的操作符。它们是

!       ++      -       &       sizeof
~       --      +       *       (类型)
  • !操作符对它的操作数执行逻辑反操作。
  • ~操作符对整型类型的操作数进行求补操作,操作数中所有原先为1的位变为0,所有原先为0的为变为1。
  • -操作符产生操作数的负值。
  • +操作符产生操作数的值:换句话说,它什么也不干。
  • &操作符产生它的操作数的地址。
  • ==*操作符是间接访问操作符,它与指针一起使用,用于访问指针所指向的值。==如:
int a, *b
...
b = &a;

  这个例子中,表达式b的值时变量a的地址,但表达式*b的值则是变量a的值。

  • sizeof操作符判断它的操作数的字节数,其结果自然取决于你所使用的环境。
  • (类型)操作符被称为强制类型转换(cast),它用于显式地把表达式的值转换为另外的类型。
  • 增值操作符++和减值操作符–如下例所示:
int a, b, c, d;
...
a = b = 10;     //a和b得到值10
c = ++a;        //a增加至11,c得到的值为11
d = b++;        //b增加至11,但d得到的值仍为10

关系操作符

  这类操作符用于测试操作数之间的各种关系。这些操作符是:

>       >=      <       <=      !=      ==
  • !=用于测试“不相等”。
  • ==操作符用于测试“相等”。
      关系操作符的结果是整型值,所以它可以赋值给整型变量,但通常它们用于if或while语句中,作为测值表达式。

逻辑操作符

  逻辑操作符有&&和||,它们用于对表达式求值,测试它们的值是真

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值