【编程语言-C++】第六讲 表达式与运算符

时间:2022-11-15 10:00:35


走,让我们一起开启今天的C++学习之旅吧!



【编程语言-C++】第六讲 表达式与运算符




前言


一、上节课回顾




上一次给大家讲了strlen和sizeof的区别,不仅仅在期末考试中,在以后写代码的过程中我们也会经常用到这两个来计算字符串的长度,所以大家一定要弄明白,不然以后很容易出错的。

今天主要给大家讲的就是表达式与运算符优先级的问题。这块对于初学C++的同学来说也是一块难点,希望大家能够用心学习。




二、上节课思考题答案


上节课让大家分析下面这几个字符串的长度

char a[] = "ab\0cd\5\\";

char a[10] = "ab\0cd\5\\";

char a[] = "ab\1cd\5\\";

答案如下:

【编程语言-C++】第六讲 表达式与运算符


重点知识介绍


一.表达式


1.什么是表达式?

表达式是由运算符和操作数组成的式子。例如:

1+2+3;

a = 4*5/6;


2.运算符

运算符包含:常量、变量、函数及自己命名的标识符。



3.常见表达式

常见表达式有如下几种:
(1)算术表达式
由算术运算符和位操作运算符组成的表达式,其值是算术值。类型由操作数决定。
示例如下:

6 * 5 / 3 - 4 + 5

由逻辑运算符组成的表达式。类型是bool型。
示例如下:

5 && 6 && i++

由关系运算符组成的表达式。类型是bool型。
示例如下:

i != 5

由赋值运算符组成的表达式。赋值运算符共有11种,一种基本的,11种复合的。
赋值运算符有两个很重要的特点:
1)结合性从右到左。
2)优先级较低,仅高于逗号表达式。

示例如下:

i += 5

(5)条件表达式

由三目运算符组成的表达式。三目运算符的格式为:

a > b? a : b

(6)逗号表达式

将若干表达式用逗号连接起来的表达式。

示例如下:

i-=3, i++

二.C++常用运算符比较级


1.运算符优先级表

下表为常见运算符名称及其使用优先级。

【编程语言-C++】第六讲 表达式与运算符

【编程语言-C++】第六讲 表达式与运算符

【编程语言-C++】第六讲 表达式与运算符

【编程语言-C++】第六讲 表达式与运算符


2.重点说明
很多人有这个表遇到复杂的表达式还是不会计算,所以做如下说明。
    1.分析表达式时,从左往右看;
   2.先算优先级高的,再算优先级低的;
   3.若是同级,看结合方向,若结合方向从左到右,先算左边再算右边;若结合方向从右到左,先算右边再算左边;
   4.可以用小括号改变优先级;
   5.使用逻辑与和逻辑或会有“短路”概念。


2.短路
逻辑与:当有一个是假,则最终为假,则a&&b中a为假时,b没有执行的必要,被短路。
逻辑或:当有一个是真,则最终为真,则a || b中a为真时,b没有执行的必要,被短路。
示例
为帮助大家理解,特别举几个例子说明:


(1)!a && ++b  //a = 8 , b = 2


从左往右看,逻辑非!是二级,比逻辑与(11级)高,先算 !a 是0,逻辑与,被短路,后面不操作,所以a还是8,b还是2。


使用 const 关键字声明常量格式如下:


(2)a += b += a+b;//a = 8  b = 2

从左往右看,+= 和+=同级,先算后面的,+的优先级高于 += ,则先算+,即上面代码先算a+b = 10;+=是从右向左结合,所以先计算 b += a+b,最后计算 a += b。所以上面式子与下面式子等价:

b += (a+b);

a += b;


思考题


已知a = 12,b = 3。

分析下面表达式的值,以及a和b的值:

b||a-4&&a/b

b&&a*b&&a+b

a+b/(a+b)&&b++

a+=b*=a-=b/=a-b

思考题的答案会在下一次的【编程语言-C++】中公布哦,希望大家多多练习,欢迎在下方评论你的答案哦。


扫描下方二维码关注 我们哦!

【编程语言-C++】第六讲 表达式与运算符


编辑人:孟咔咔        

审核人:水亦心