C++基础知识【2】运算符和表达式

目录

运算符

算术运算符

赋值运算符

比较运算符

逻辑运算符

位运算符

 自增自减运算符

其他运算符

优先级

表达式


运算符

        运算符也称操作符,是对数据进行运算的符号。

        根据符号的个数,C++中可以把运算符分为单目运算符、双目运算符和三目运算符。

        根据其功能,又可将运算符分为算术运算符、赋值运算符等等。

下面是常见的C++运算符和表达式的详解及示例:

算术运算符

        加法运算符(+):将两个数相加。

int a = 10;

int b = 20;

int c = a + b; // c的值为30

        减法运算符(-):将一个数减去另一个数

int a = 10;

int b = 20;

int c = b - a; // c的值为10

        乘法运算符(*):将两个数相乘

int a = 10;

int b = 20;

int c = a * b; // c的值为200

        除法运算符(/):将一个数除以另一个数

int a = 20;

int b = 10;

int c = a / b; // c的值为2

        取模运算符(%):将一个数除以另一个数,返回余数

int a = 20;

int b = 10;

int c = a % b; // c的值为0

赋值运算符

        赋值运算符(=):将右侧的值赋给左侧的变量

int a = 10;

int b = 20;

b = a; // b的值变为10

        加等于运算符(+=):将右侧的值加到左侧的变量上

int a = 10;

int b = 20;

b += a; // b的值变为30

        减等于运算符(-=):将右侧的值从左侧的变量中减去

int a = 10;

int b = 20;

b -= a; // b的值变为10

        乘等于运算符(*=):将左侧的变量乘以右侧的值

int a = 10;

int b = 20;

b *= a; // b的值变为200

        除等于运算符(/=):将左侧的变量除以右侧的值

int a = 10;

int b = 20;

b /= a; // b的值变为2

        取模等于运算符(%=):将左侧的变量取模右侧的值

int a = 10;

int b = 20;

b %= a; // b的值变为0

比较运算符

        等于运算符(==):判断两个值是否相等

int a = 10;

int b = 20;

bool c = (a == b); // c的值为false

        不等于运算符(!=):判断两个值是否不相等

int a = 10;

int b = 20;

bool c = (a != b); // c的值为true

        大于运算符(>):判断左侧的值是否大于右侧的值

int a = 10;

int b = 20;

bool c = (b > a); // c的值为true

        小于运算符(<):判断左侧的值是否小于右侧的值

int a = 10;

int b = 20;

bool c = (a < b); // c的值为true

        大于等于运算符(>=):判断左侧的值是否大于或等于右侧的值

int a = 10;

int b = 20;

bool c = (b >= a); // c的值为true

        小于等于运算符(<=):判断左侧的值是否小于或等于右侧的值

int a = 10;

int b = 20;

bool c = (a <= b); // c的值为true

逻辑运算符

        逻辑与运算符(&&):判断两个条件是否都为真

int a = 10;

int b = 20;

bool c = (a > 5) && (b < 30); // c的值为true

        逻辑或运算符(||):判断两个条件是否有一个为真

int a = 10;

int b = 20;

bool c = (a > 5) || (b < 15); // c的值为true

        逻辑非运算符(!):对条件取反

int a = 10;

int b = 20;

bool c = !(a > b); // c的值为true

位运算符

        按位与运算符(&):将两个数的二进制对应位相与,结果中每一位都是1时,结果为1,否则为0

int a = 10; //二进制是1010

int b = 12; //二进制是1100

int c = a & b; // 每一位进行与运算,那么c的值为1000,也就是8

        按位或运算符(|):对两个数的二进制进行按位或运算

int a = 10; //二进制是1010

int b = 12; //二进制是1100

int c = a | b; // c的值为14(1110)

        按位异或运算符(^):对两个数的二进制进行按位异或运算

int a = 10; //二进制是1010

int b = 12; //二进制是1100

int c = a ^ b; // c的值为6(0110)

        按位取反运算符(~):对一个数的二进制进行按位取反运算

int a = 10; //二进制是1010

int b = ~a; // b的值为-11

        取反运算符公式:n=-(n+1) 计算机中二进制以补码的形式存在。

        左移运算符(<<):将一个数的二进制表示向左移动若干位,右侧用0填充,左侧超出的位数被舍弃,相当于将该数乘以2的n次方。

int a = 10; //二进制是1010

int b = a << 2; // b的值为40

        右移运算符(>>):将一个数的二进制表示向右移动若干位,左侧用符号位填充,右侧超出的位数被舍弃,相当于将该数除以2的n次方。

int a = 10;

int b = a >> 2; // b的值为2

 自增自减运算符

        C++中的自增自减运算符分为前缀和后缀两种形式。前缀形式先对变量进行自增或自减操作,然后将结果作为表达式的值;后缀形式先将变量的值作为表达式的值,再对变量进行自增或自减操作。两种形式的区别在于它们返回的值不同。

示例代码如下:

int a = 5;

int b = ++a; // 前缀自增,a先自增1,然后将结果6赋值给b

int c = a++; // 后缀自增,a的值5赋值给c,然后a自增1

int d = --a; // 前缀自减,a先自减1,然后将结果5赋值给d

int e = a--; // 后缀自减,a的值5赋值给e,然后a自减1

记住先出现先处理

        需要注意的是,在表达式中多次使用自增自减运算符时,要根据它们的优先级和结合性来计算。例如,表达式i = j++ + ++k;的计算顺序是先计算++k,然后计算j++,最后计算+运算符。这个表达式等价于i = j + k + 1;。

其他运算符

        条件运算符(?:),唯一的三目运算符:根据一个条件的真假值来决定返回两个值中的一个。

int a = 10;

int b = 20;

int c = (a > b) ? a : b; // c的值为20

        逗号运算符(,):按顺序执行多个表达式,并返回最后一个表达式的值

int a = 10,

b = 20,

c = 30;

int d = (a++, b++, c++); // d的值为30,a、b、c分别为11、21、31

        sizeof运算符:返回一个数据类型或变量所占的字节数

int a = 10;

int b = sizeof(a); // b的值为4,因为int类型占用4个字节

注意不要对指针使用 sizeof

使用它们可以进行各种数学运算、逻辑判断和位操作。

优先级

        C++中的运算符有不同的优先级,优先级高的运算符先执行,优先级低的运算符后执行。如果表达式中存在多个操作符,需要根据优先级规则来决定它们的计算顺序。以下是C++中常见操作符的优先级从高到低的排列:

优先级

运算符

描述

1

::

作用域解析

2

()、[]、->、.

函数调用、数组下标、成员访问、指向成员访问

3

++、--

自增、自减

4

!、~、+、-

逻辑非、按位取反、一元加、一元减

5

*、/、%

乘法、除法、取模

6

+、-

加法、减法

7

<<、>>

左移、右移

8

<、<=、>、>=

关系运算符

9

==、!=

相等性运算符

10

&

按位与

11

^

按位异或

12

|

按位或

13

&&

逻辑与

14

||

逻辑或

15

?:

条件运算符

16

=、+=、-=、*=、/=、%=

赋值运算符

17

,

逗号运算符

需要注意的是,优先级高的运算符不一定就是计算结果的优先级高,因为括号的使用可以改变操作符的优先级。因此,在编写表达式时,应当注意使用括号来明确运算符的优先级。例如:

int x = 2, y = 3, z = 4;

int a = x + y * z;      // 结果为14,优先级高的*先计算

int b = (x + y) * z;    // 结果为20,使用括号改变优先级

表达式

        在C++中,表达式是由一系列的运算符和操作数组成的式子,可以用于计算一个值或执行某个操作。

        表达式的组成部分包括:

        操作数(Operand):表达式中参与运算的值,可以是变量、常量、函数调用等。

        运算符(Operator):用于进行运算或操作的符号,包括算术运算符、关系运算符、逻辑运算符、赋值运算符等。

        分隔符:用于分隔表达式中的不同部分的符号,例如括号、逗号等。

表达式可以包含单个操作数,也可以由多个操作数和运算符组成。例如,以下是几个简单的表达式:

2 + 3 // 算术表达式,计算2和3的和

x * y // 算术表达式,计算变量x和y的乘积

x > y // 关系表达式,判断变量x是否大于变量y,返回一个布尔值

a && b // 逻辑表达式,判断变量a和b是否都为真,返回一个布尔值

        表达式的值的类型和结果的类型由表达式中参与运算的操作数和运算符决定。表达式的值可以用于赋值给变量或传递给函数等。

        需要注意的是,表达式的计算顺序和优先级由运算符的优先级和括号的使用决定。在编写表达式时,应当注意运算符的优先级,避免出现不符合预期的计算结果。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从此不归路

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值