当前位置:首页 > 编程笔记 > 正文
已解决

【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述

来自网友在路上 162862提问 提问时间:2023-10-26 12:24:45阅读次数: 62

最佳答案 问答题库628位专家为你答疑解惑

1.23 运算符概述

       运算符,在数学中常见的加减乘除之类的符号,那么在C++在编程语言中呢,将使用特定的符号或标记对操作数进行操作以生成结果。用算术运算符将运算对象(也称操作数)连接起来的、符合C ++语法规则的式子,称为C ++算术表达式运算对象包括常量、变量、函数返回值等,以下是一些常见的运算符概述:

( 注:a+b,a就是左边的操作数,b就是右边的操作数)

1.算术运算符

  • 加法运算符(+):将两个操作数相加,例如 a + b
  • 减法运算符(-):从左操作数中减去右操作数,例如 a - b
  • 乘法运算符(*):将两个操作数相乘,例如 a * b
  • 除法运算符(/):将左操作数除以右操作数,例如 a / b
  • 取模运算符(%):返回两个操作数相除的余数,例如 a % b
  •     +=  :  a+=b,相当于 a= a+b;
  •     -=   :  a-=b,相当于 a= a-b;
  •     *=   :  a*=b,相当于 a= a*b;    注意=号右边的看成一个整体,例如a*=2+3; 实际为a=a*(2+3)
  •     /=   :   a/=b,相当于 a= a/b;
  •    %=  :    a/=b,相当于 a= a%b;

1.1 对于 / 符号 

   1.取整符号   /

例如:7/2 = 3,7除以2,商为3,余数为1,那取整就是取的商的结果,3  (这里的=是我们数学意义上的=,在计算机里,我们要比较,需要使用比较运算符 ==,双等于号)

   2.除法符号    /

例如:7/2.0 == 3.5,此时除数为浮点类型,所以我们的被除数7,使用/符号表示的为除法运算,并且根据浮点数的小数点,保留相应的位数。

1.2 对于取模运算 %

    例如:7%2 = 1,7除以2.商为3,余数为2,取模就是取的除不尽的余数,如果除尽的就是0,除不尽的就是拿的是余数,2

1.2.1 产生随机数

这里引用千锋教育网络基础班的资料,解释一下取模的一些用法

2.一些复合运算的案例

 这里要考虑优先级,从右往左--------<<<<<<--------依次计算

int a = 3; a+= a-=a*=a;根据表达式 `a+= a-=a*=a;`,其运算结果和过程如下:1. 首先,根据赋值运算符的优先级规则,先执行乘法赋值运算 `a*=a`。- 乘法赋值运算 `a*=a` 将 `a` 乘以自身的值,结果为 `9`。- 此时的表达式变为 `a+= a-=9;`。2. 接着,执行减法赋值运算 `a-=9`。- 减法赋值运算 `a-=9` 将 `a` 减去 `9` 的值,结果为 `9-9=0`。- 此时的表达式变为 `a+=0;`。3. 最后,执行加法赋值运算 `a+=0`。- 加法赋值运算 `a+=0` 将 `a` 加上 `0` 的值,结果为 `0+(0)=0`。- 所以最终的赋值结果是 `a` 等于 `0`。综上所述,根据给定的表达式 `a+= a-=a*=a;` ,其运算结果是 `0`。

程序运行: 

 

2.关系运算符(比较运算符)

  • 相等运算符(==):检查两个操作数是否相等,例如 a == b
  • 不等运算符(!=):检查两个操作数是否不相等,例如 a != b
  • 大于运算符(>):检查左操作数是否大于右操作数,例如 a > b
  • 小于运算符(<):检查左操作数是否小于右操作数,例如 a < b
  • 大于等于运算符(>=):检查左操作数是否大于或等于右操作数,例如 a >= b
  • 小于等于运算符(<=):检查左操作数是否小于或等于右操作数,例如 a <= b

3.逻辑运算符

  • 逻辑与运算符(&&):当两个操作数都为真(在代码里面是叫True)时,返回真。如果任一操作数为假(在代码里面是叫False),则返回假,例如 a && b
  • 逻辑或运算符(||):当任一操作数为真时,返回真。如果两个操作数都为假,则返回假,例如 a || b
  • 逻辑非运算符(!):将操作数的逻辑值取反,例如 !a

4.赋值运算符

  • 简单赋值运算符(=):将右操作数的值赋给左操作数,例如 a = b
  • 复合赋值运算符:例如加法赋值运算符(+=)、减法赋值运算符(-=)、乘法赋值运算符(*=)等。

 5.区分什么是单目、双目、三目

如果运算符需要一个运算对象 就叫单目运算符

如果运算符 需要两个运算对象 就叫双目运算符

如果运算符 需要三个运算对象 就叫三目运算符

如果运算符 需要多个运算对象 就叫多目运算符

6. 复合运算符

常见的复合运算符包括:

  • 加法赋值运算符(+=):将右操作数的值加到左操作数,并将结果赋给左操作数,例如 a += b 等价于 a = a + b
  • 减法赋值运算符(-=):从左操作数中减去右操作数的值,并将结果赋给左操作数,例如 a -= b 等价于 a = a - b
  • 乘法赋值运算符(*=):将左操作数乘以右操作数的值,并将结果赋给左操作数,例如 a *= b 等价于 a = a * b
  • 除法赋值运算符(/=):将左操作数除以右操作数的值,并将结果赋给左操作数,例如 a /= b 等价于 a = a / b
  • 取模赋值运算符(%=):将左操作数除以右操作数的余数赋给左操作数,例如 a %= b 等价于 a = a % b

1.23.6 按位“与”以及 按位取反

1.按位“与”  &

语法:全1为1  有0为0
特点:和1相与保持不变    和0相与为0
场景: 将指定位 清0

例如:

   1100 1010
&  1011 1100 
-----------------1000 1000

注:代码中需要将这样二进制的转成16进制(单片机开发经常使用) 

 2.按位“或” |

语法:有1为1全0为0

特点:和1或置1,和0或 保持不变(两个只要有一个1就是1,有0不管,原来是啥还是啥)

场景:将指定位 置1

   1100 1010
|  1011 1100 
-----------------1111 1110

3.按位取反 “~”

语法:0变1,1变0

例如:

~1011 1101 == 0100 0010

1.23.7 按位“异或”运算符

1.按位异或 ^

语法:相同为0,不同为1
特点:和1异或取反,和0异或保持不变
场景:将指定位发生翻转

例如:

   1100 1010
^  1011 1100 
-----------------0111 1110

1.23.8 左移、右移运算符

1.左移运算符 <<   

左移<<:左边丢弃 右边补0
移动的位数 不要超过 自身位的宽度

例如:dataNum = 1011 1101    

现在执行 dataNum << 3; 则dataNum == 1110 1000  向左移动3位,右边补0;

例如代码中:int data = 10;10的二进制是1010  (记住转十进制4位,就是8421十进制从左往右)

那么0000 1010 <<2;左移两位变成:0010 1000 =32+8 = 40 

2.右移运算符 >> 

右移<<:右边丢弃 左边补0(负数补1)

引用千锋教育c++基础班资料笔记中内容

 不管是算术右移、还是逻辑右移都是编译器决定,我们使用者是无法确定的。

无符号数:右边丢弃左边补0有符号数:
正数:右边丢弃左边补0
负数:右边丢弃左边补0(逻右移)
负数:右边丢弃 左边补1 (算术右移)

引用千锋教育c++基础班资料笔记中案例

下图就是我自己使用的计算机的右移策略是算术右移; 

 

今天先到这里,有问题的打在评论区或者私聊我。谢谢支持,mua爱大家

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"【带头学C++】----- 1.基础知识 ---- 1.23 运算符概述":http://eshow365.cn/6-25093-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!