设为首页 加入收藏

TOP

第6章 分支语句和逻辑运算符(一)
2023-07-23 13:29:19 】 浏览:67
Tags:支语句

说明

看《C++ Primer Plus》时整理的学习笔记,部分内容完全摘抄自《C++ Primer Plus》(第6版)中文版,Stephen Prata 著,张海龙 袁国忠译,人民邮电出版社。只做学习记录用途。

本章介绍分支语句条件运算符逻辑运算符

6.1 if 语句

6.1.1 if 语句

if 语句的语法和 while 相似:

if (test-expression)
{
    statements;
}

和循环测试条件一样,if 测试条件也将被强制转换为 bool 值,如果 test-expression(测试条件)为 true,则程序将执行statements(语句),如果测试条件为 false,则程序将跳过语句。

通常将测试条件 variable == value 写为反转形式 value == variable,用以捕获将相等运算符 == 误写为赋值运算符 = 的错误,例如将 x == 3写为 3 == x

6.1.2 if else 语句

if语句让程序决定是否执行特定的语句或语句块,而 if else 语句则让程序决定执行两条语句或语句块中的哪一条,if else 语句的通用格式如下:

if (test-expression)
{
    statements1;
}
else
{
    statements2;
}

如果测试条件为 true 或非零,则程序将执行 statements1,跳过 statements2;如果测试条件为 false 或零,则程序将跳过statements1,执行 statements2

6.1.3 多层 if else 结构

将一个 if else 包含于另一个 if elseelse 语句中,可得到多层条件分支语句,通常将其写为如下易于阅读的形式:

if (test-expression1)
{
    statements1;
}
else if (test-expression2)
{
    statements2;
}
else
{
    statements3;
}

如果测试条件 test-expression1true 或非零,则程序将执行 statements1,跳过 statements2statements3;如果测试条件 test-expression1false 或零且测试条件 test-expression2true 或非零,则程序将执行 statements2,跳过 statements1statements3;如果测试条件 test-expression1test-expression2 都为 false 或零,则程序将跳过 statements1statements2执行 statements3

6.2 逻辑运算符

C++ 提供了三种逻辑运算符,分别是逻辑 OR||)、逻辑 AND&&)和逻辑 NOT!)。

6.2.1 逻辑 OR 运算符:||

C++ 可以采用逻辑 OR 运算符(||)将两个表达式组合在一起,如果原来表达式中的任何一个或全部都为true(或非零),则得到的表达式的值为true,否则,表达式的值为false。C++ 规定,|| 运算符是个顺序点,其左边的子表达式优先于右边的子表达式,如果左侧的表达式为true,则 C++ 不会去判定右侧的表达式。expr1 || expr2的值如下表所示:

expr1 == true expr1 == false
expr2 == true true true
expr2 == false true false

6.2.2 逻辑 AND 运算符:&&

C++ 采用逻辑 AND 运算符(&&)将两个表达式组合在一起,当且仅当原来的两个表达式都为true(或非零)时,则得到的表达式的值为true,否则,表达式的值为false&&运算符是个也是个顺序点,其左边的子表达式优先于右边的子表达式,如果左侧的表达式为false,则 C++ 不会去判定右侧的表达式。expr1 && expr2的值如下表所示:

expr1 == true expr1 == false
expr2 == true true false
expr2 == false false false

逻辑 AND 运算符(&&)通常用于设置取值范围,例如:age >= 35 && age < 50

6.2.3 逻辑 NOT 运算符:!

逻辑 NOT 运算符(!)将它后面的表达式的真值取反。!expr的值如下表所示:

expr == true expr == false
false true

6.2.4 逻辑运算符的优先级以及另一种表示方式

C++ 逻辑 OR 和逻辑 AND 运算符的优先级都低于关系运算符,但逻辑 NOT 运算符的优先级高于所有关系运算符和算术运算符,逻辑 AND 运算符的优先级高于逻辑 OR 运算符。

//逻辑OR优先级低于关系运算符,以下两种方式等价
x > 5 || x < -5
(x > 5) || (x < -5)

//逻辑AND优先级低于关系运算符,以下两种方式等价
x > 5 && x < 10
(x > 5) && (x < 10)
    
//逻辑NOT优先级高于所有关系运算符和算术运算符,以下两种方式等价
!x > 5		//值总为false
(!x) > 5
    
//逻辑AND优先级高于逻辑OR,以下两种方式等价
age > 30 && age < 45 || weight > 300
(age > 30 && age < 45) || (weight > 300)

并不是所有的键盘都提供了用作逻辑运算符的符号,因此 C++ 标准提供了另一种表示方式(C++ 保留字),如下表所示。当 C 语言程序包含头文件 iso646.h后,也可以使用对应逻辑运算符的另一种表示方式。

运算符 另一种表示方式
|| or
&& and
! not

6.3 字符函数库 cctype

C++ 从 C 语言继承了一个与字符相关的、非常方便的函数库cctype,它可以简化诸如确定字符是否为大写字母、数字、标点符号等工作。例如,测试字符ch是否是字母字符有以下两种方式,但显然第二种方式更简洁:

//方式一:使用关系运算符以及逻辑运算符
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z'))

//方式二:使用cctype库中的isalpha()函数
if (isalpha(ch))

下表列出了cctype库中常用的函数

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇vs中.\ 与 ..\ 区别 下一篇驱动开发:PE导出函数与RVA转换

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目