⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c++3.dat

📁 C++指令字典 一个方便的软件 用于C++指令的查询
💻 DAT
字号:
第三章 运算符和表达式

第一节 C++运算符

 所谓运算符就是指运算的符号,例如加运算符(+)、乘运算符(*)、取地址运算符(&)等.表达式与运算符密不可分,它由运算符与操作数组合而成,并由运算符指定对操作数要进行的运算,一个表达式的运算结果是一个值.本章中,我们将介绍C++语言基本的运算符、表达式,各种运算符的优先级、结合性,以及不同数据类型的值之间的转换. 
C++提供的运算符有以下几种:算术运算符、关系运算符、逻辑运算符、位运算符、条件运算符、赋值运算符、逗号运算符、sizeof运算符及其它运算符(这是按功能分的).不同的运算符,需要指定的操作数的个数并不相同.根据运算符需要的操作数的个数,可将其分为三种:单目运算符(一个操作数)、双目运算符(两个个操作数)和三目运算符(三个操作数).下面,我们介绍几种基本的C++运算符.

1 基本的算术运算符 
  运算符 名字 实例 
    +  -  *  /  %(取余)

2 自增、自减运算符
  ++是自增运算符,――自减运算符,这两个运算符都是单目运算符,且功能相近,都是将数值变量的值加1或减1,用户只能将这类操作符应用于变量而不能应用于常量.要替代下列代码
  valuel=valuel+1;
  可使用
  ++valuel; 
  或
  valuel++;
  这里前一种方式称为前缀方式,后一种称为后缀方式,其目的都是使valuel加1.二者的区别是:前缀式先将操作数增1(或减1),然后取操作数的新值参与表达式的运算.后缀是先将操作数增1(或减1)之前的值参与表达式的运算,到表达式的值被引用之后再做加1(或减1)运算.

3 关系运算符 
  运算符 名字 
   = =   等于 
   ! =   不等于
   <     小于
   < =   小于等于
   >     大于
   > =   大于等于
 
4  逻辑运算符
   C++提供了3种逻辑运算符,参见表3-5.如同关系运算符,用逻辑运算符组成的表达式的值或为1(表示true),或为0(表示false).
  逻辑非(!)是单目运算符,它将操作数的逻辑值取反.即:如果操作数是非零,它使表达式的值为0;如果操作数是0,它使表达式的值为1.

运算符        操作数1          操作数2        表达式的值 
--------------------------------------------------------
逻辑与(&&)  true             true 	      true 
              false            true           false 
              true             false          false 
              false            false          false 

逻辑或(||)  true             true           true 
              false            true           true 
	      true             false          true 
              false            false          false 

5 位运算符
  C++提供6种位运算符,可以进行二进制位的运算,参见表3-7. 
  位运算符要求操作数是整型数,并按二进制位的顺序来处理它们.取反运算符是单目运算符,其它位运算符是双目运算符.取反运算符(~)将操作数的二进制位逐位取反.逐位与运算符(&)比较两个操作数对应的二进制位,当两个二进制位均为1时,该位的结果取1,否则取0.逐位或运算符(|)比较两个操作数对应的二进制位,当两个二进制位均为0时,该位的结果取0,否则取1.逐位异或运算符(^)比较两个操作数对应的二进制位,当两个二进制位均为1或均为0时,该位的结果取0,否则取1.
  逐位左移运算符(<<)和逐位右移运算符(>>)均有一个正整数n作为右操作数,将左操作数的每一个二进制位左移或右移n位,空缺的位设置为0或1.对于无符号整数或有符号整数,如果符号位为0(即为正数),空缺位设置为0;如果符号位为1(即为负数),空缺位是设置为0还是设置为1,要取决于所用的计算机系统.

位操作运算符是用来进行二进制位运算的运算符.它分为两类:逻辑位运算符和移位运算符.
  1、逻辑位运算符
  (1)单目逻辑位运算符:~(按位求反)
  作用是将各个二进制位由1变0,由0变1.
  (2)双目逻辑运算符:&(按位与),|(按位或),^(按位异或)
  其中优先级&高于^,而^高于|.
  & :两个都为1时结果为1.
  | :两个其中有一个为1则结果为1.
  ^ :两个不同则结果为1,否则为0.
  2、移位运算符
  移位运算符有两个,<<(左移)、>>(右移).两个 都是双目运算符.
  例. 指出下面表达式的功能.
  (p&0377)|(k&0xff)<<8
  将整数p的低字节作为作为结果的低字节,k的低字节作为结果的高字节拼成一个新的整数.

 
6 赋值运算符
  =是赋值运算符,它的作用是将一个表达式的值赋给一个左值.一个表达式或者是一个左值,或者是一个右值.所谓左值是指一个能用于赋值运算左边的表达式.左值必须能够被修改,不能是常量.我们现在是用变量作左值,以后还可以看到,指针和引用也可以作左值.例如:
  int a, b, c;
  a=3;
  b=4;
  c = ( a + b )*(2*a - b) // 得出14
  赋值运算符可与算术运算符和位运算符组合,产生许多变种,参见下表. 
  赋值运算本身也是一个表达式,即赋值表达式,该表达式的值是存储在赋值运算符左边变量中的值.一个赋值表达式能作为另一个赋值表达式的右操作数,多个赋值运算符能够连接在一个表达式中.例如:
  int m, n, p;
  m = n = p = 100; // 即: n = (m = (p = 100));
  m = (n = p = 100) + 2; // 即: m = (n = (p = 100)) + 2;
  m += n = p = 10; // 即: m = m + (n = p = 10); 

 
运算符         实例         等价于 
----------------------------------
 =             n = 2     
 + =           n += 2        n = n + 2
 - =           n -= 2        n = n - 2  
 * =           n *= 2        n = n * 2 
 / =           n /= 2        n = n / 2 
 % =           n %= 2        n = n % 2 
 & =           n &= 0xA2F4   n = n & 0xA2F4 
 | =           n |= 0xA2F4   n = n | 0xA2F4  
 ^ =           n ^= 0xA2F4   n = n ^ 0xA2F4 
 << =          n <<= 4       n = n << 4 
 >> =          n >>= 4       n = n >> 4 

7 求字节数运算符
  C++提供了一个有用的运算符sizeof,它是一个单目运算符,用于计算表达式或数据类型的字节数,其运算结果与不同的编译器和机器相关.当编写用于进行文件输入/输出操作或给动态列表分配内存的程序时,用户将发现,如能知道程序给这些特定变量所分配内存的大小将会很方便. 例如3-1: 
  当我们进行算术运算时,如果运算结果超出变量所能表达的数据范围时,就会发生溢出.而利用sizeof运算符计算变量所占的字节数,也就是说,可以算出变量的数据范围,从而可以避免可能出现的错误.  sizeof(char) 的值是 1
 
8 条件运算符
  三目运算符只有一个,其一般形式为: 表式式1? 表达式2:表达式3

 其中表达式1为条件表达式.如果表达式1为真,取表达式2的值;如果表达式1的值为假,取表达式3的值.
 例如: max=a>b?a:b
 如果a大于b,max=a
 如果a不大于b,max=b

9 逗号运算符
   C++语言提供一种特殊的运算符--逗号运算符.用它将两个表达式连接超来.如:3+5,6+8 
 称为逗号表达式,又称为"顺序求值运算符".逗号表达式的一般形式为: 表达式1,表达式2

 逗号表达式的求解过程是:先求解表达式1,再求解表达式2.整个逗号表达式的值是表达式2的值.例如,上面的逗号表达   式"3+5,6+8"的值是14.又如,逗号表达式a=3*5,a*4对此  表达式的求解.首先计算表达式1a=3*5,值为15,在计算表式2   ,15*4,值为60.

 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式,如(a=3*5,a*4),a+5.先计算出a的值等于15,再进 行   a*4的运算得60(但a值未变,仍为15),    再进行a+5得20,即整个表达式的值为20.

 逗号表达式的一般形式可以扩展为: 表达式1,表达式2,表达式3.......表达式n 它的值为表达式n的值.

10 可以利用强制类型转换运算符将一个表达式转换成所需类型.例如:
 (double)a        (将a转换成double类型)
 (int)(x+y)       (将x+y的值转换成整型)
 (float)(5%3)     (将5%3的值转换成float型)

 其一般形式为: (类型名)(表达式) 注意,表达式应该用括号括起来.如果写成(int)x+y 则只将x转换成整型,然后与y    相加.
 需要说明的是在强制类型转换时,得到一个所需类型的中间变量,原来变量的类型未发生变化.例如: (int)x (不要写成  int(x)).如果x原定为float型,进行强制类型运算后得到一个int型的中间变量,它的值等于x的整数部分,而x 的类型不  变(仍为float型)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -