《C++语言入门经典》一2.6 表达式

简介: 本节书摘来自华章出版社《C++语言入门经典》一书中的第2章,第2.6节,作者 郭鑫 顾彦玲,更多章节内容可以访问云栖社区“华章计算机”公众号查看

2.6 表达式

表达式由运算符、括号、数值对象或变量等几个元素构成。一个数值对象是最简单的表达
式,一个表达式可以被看做是一个数学函数。带有运算符的表达式通过计算将返回一个数值。
例如:

1 + 1 
3.1415926 
i + 1 
x > y100 >> 2 
j * 3

当表达式中有两个或多个运算符时,称表达式为复杂表达式,运算符执行的先后顺序由它
们的优先级和结合性决定。例如:

(X+Y)*Za*x+b*y+z

一个表达式的值的数据类型由运算符的种类和操作数的数据类型决定。
根据运算符的不同,带运算符的表达式可以分成算术表达式、关系表达式、逻辑表达式、
条件表达式和赋值表达式等几类。

2.6.1 算术表达式

算术表达式的一般形式如下:

表达式算术运算符表达式

算术表达式由算术运算符把表达式连接而成,其值的计算很简单,其值的数据类型按下
述规定确定:若所有运算符数量类型相同,则表达式运算结果的数据类型和操作数的数据类
型相同;若操作数的数据类型不同,就需要转换,表达式运算结果的数据类型取最高的数据
类型。

2.6.2 关系表达式

关系表达式的一般形式如下:

表达式关系运算符表达式

关系表达式一般只出现在三目运算符、if语句和循环语句的判断条件中。关系表达式的运
算结果都是逻辑型,只能取true或false。数值0表示false,非0代表true。

2.6.3 条件表达式

条件表达式的一般形式如下:

关系表达式?表达式:表达式

条件表达式的值和数据类型取决于?号前表达式的真假,若为真,则整个表达式的运算结
果和数据类型和冒号前的操作数相同;若为假,则整个表达式的值和数据类型和冒号后的操作

2.6.4 赋值表达式

赋值表达式的一般形式如下:

表达式赋值运算符表达式

赋值运算符的值和数据类型与第一个操作数对象值完毕后的值和数据类型相同。
由于赋值运算符的结合性是从右至左,因此可以出现连续赋值的表达式。

2.6.5 逻辑表达式

逻辑表达式的一般形式如下:

表达式逻辑运算符表达式

逻辑表达式用逻辑运算符将关系表达式连接起来。逻辑表达式的值也是逻辑型,只能取真
值true或假值false。
其中的表达式又可以是逻辑表达式,从而组成了嵌套的情形。例如,对于(a||b)&&c,
根据逻辑运算符的左结合性,也可写为a||b&&c 。逻辑表达式的值是式中各种逻辑运算的最后
值,以1和0分别代表“真”和“假”。
1)逻辑运算符两侧的操作数,除了可以是0和非0的整数外,也可以是其他任何类型的数
据,如实型、字符型等。
2)在计算逻辑表达式时,只有在必须执行下一个表达式才能求解时,才求解该表达式,
也就是说,并不是所有的表达式都被求解。例如,对于逻辑与运算,如果第一个操作数被判定
为“假”,系统将不再判定或求解第二个操作数;对于逻辑或运算,如果第一个操作数被判定
为“真”,系统将不再判定或求解第二个操作数。

相关文章
|
2月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
51 2
|
2月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
49 0
|
6天前
|
算法 编译器 程序员
C++ 11新特性之Lambda表达式
C++ 11新特性之Lambda表达式
|
22天前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
14 0
|
2月前
|
编译器 C++ 容器
C++语言的基本语法
想掌握一门编程语言,第一步就是需要熟悉基本的环境,然后就是最重要的语法知识。 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 - 类可以定义为描述对象行为/状态的模板/蓝图。 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 完整关键字
54 2
|
3月前
|
前端开发 编译器 程序员
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
|
3月前
|
安全 编译器 C++
C++一分钟之-泛型Lambda表达式
【7月更文挑战第16天】C++14引入泛型lambda,允许lambda接受任意类型参数,如`[](auto a, auto b) { return a + b; }`。但这也带来类型推导失败、隐式转换和模板参数推导等问题。要避免这些问题,可以明确类型约束、限制隐式转换或显式指定模板参数。示例中,`safeAdd` lambda使用`static_assert`确保只对算术类型执行,展示了一种安全使用泛型lambda的方法。
43 1
|
4月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
38 0
|
4月前
|
存储 编译器 开发工具
C++语言教程分享
C++语言教程分享
|
4月前
|
自然语言处理 编译器 C语言
C++语言入门教程
C++语言入门教程
下一篇
无影云桌面