C++证道之路第六章分支语句和逻辑运算符

本文详细介绍了C++中的if、ifelse、switch语句以及条件运算符的使用,讨论了逻辑表达式、break和continue在控制流程中的作用,同时涵盖了文本I/O操作,包括文件输入输出、错误处理和文件操作的基本步骤。
摘要由CSDN通过智能技术生成

if语句

if有两种格式,if和if else

if的语法与while相似:

if(test-condition)
statement

if else语句

if else if else 结构

条件运算符和错误防范

许多程序员将更直观的表达式 variable == value翻转为 value ==variable,以此来捕获相等运算符误写为,赋值运算符的错误。

逻辑表达式

逻辑OR(||),逻辑AND(&&),逻辑NOT(!)。
逻辑NOT运算符:!

!运算符将它后面的表达式的真值取反。

!运算符的优先级高于所有的关系运算符和算数运算符。

字符函数库cctype

?:运算符

C++有一个常被用来代替if else语句的运算符,这个运算符被称为条件运算符(?:),

它是C++中唯一一个需要三个操作数的运算符。

该运算符的通用格式如下:

expression1 ? expression2 : expression3

如果,expression1 为true,则整个条件表达式的值为expression2的值;否则,整个表达式的值为expression3的值。

if else序列相比,条件运算符更简洁,但第一次遇到时不那么容易理解。这来那个黄总方法回见的区别是,条件运算符生成一个表达式,因此是一个值。可以将其赋给变量或将其放到一个更大的表达式中。

switch语句

C++的switch语句能够更容易的从大型列表中进行选择。

C++的switch语句就像指路牌,告诉计算机接下来应执行哪行代码。

提示:

如果既可以使用if else if语句,也可以使用switch 语句,则当选项不少于3个时,应使用switch语句。

break 和 continue语句

break和continue语句都能够使程序跳过部分代码。

可以在switch语句或任何循环中使用break语句,使程序跳到switch或循环后面的语句执行。continue语句用于循环中,让程序跳过循环体中余下的代码,并开始新一轮的循环。

虽然continue语句导致该程序跳过循环体的剩余部分,但不会跳过循环的更新表达式。在for循环中,continue语句使程序直接跳到更新表达式,然后跳到测试表达式处。然而,对于while循环来说,continue将使程序直接跳到测试表达式处,因此while循环体中位于continue之后的更新表达式都将被跳过。

C++也有goto语句

下面的语句将跳到使用paris:作为标签的位置。

在大多数情况下(有些人认为,在任何情况下),使用goto语句不好,而应使用结构化控制语句来控制程序的流程。

读取数字的循环

int n;

cin >> n;

如果用户输入一个单词,而不是一个单词,情况会如何呢?发生这种类型不匹配的情况时,将发生四种情况:

n 的值保持不变;
不匹配的输入将被留在输入队列中;
cin对象中的一个错误标记被设置;
对cin方法的调用将返回false(如果被转换为bool类型)。
如果逻辑AND表达式的左侧为false,则C++将不会判断右侧的表达式。

简单文件输入/输出

这里介绍 一下文本I/O的概念。使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据——文本数据。

必须包含头文件iostream。

头文件iostream定义了一个用处理输出的ostream类

头文件iostream声明了一个名为cout的ostream变量(对象)。

必须指明名称空间std例如,为引用元素cout和ednl,必须使用编译指令using 或前缀std::

可以结合使用cout 和运算符<<来显示各种类型的数据。

文件输出与此极其相似。

必须包含头文件 fstream

头文件fstream 定义了一个用于处理输出的ofstream类。

需要声明一个或多个ofstream变量(对象),并以自己喜欢的方式对其进行命名。条件时遵守常用的命名规则。

必须指明名称空间std:例如,为引用元素ofstream,必须使用编译指令using或前缀std

需要将ofstream 对象与文件关联起来。为此,方法之一是使用open()方法。

使用完文件后,应使用方法close()将其关闭。

可结合使用ofstream对象和运算符<<来输出各种类型的数据。

注意,虽然头文件iostream提供了一个预先定义好的名为cout的ostream 对象,但您必须声明自己的ofstream对象,为其命名。

总之,使用文件输出的主要步骤如下:

1,包含头文件fstream
2,创建一个ofstream对象
3,将该ofstream对象同一个文件关联起来。
4,就像使用cout那样使用该ofstream 对象。

注意,方法close()不需要使用文件名作为参数,这是 因为outfile已经同特定的文件关联起来,如果你忘记关闭文件,程序正常终止时,将会自动关闭它。

在这里,该程序运行之前,文件carinfo.txt并不存在。在这种情况下 ,方法open()将新建一个名为carinfo.txt的文件。如果在此运行程序,文件carinfo.txt将存在,此时情况将如何呢?

默认情况下,open()将首先截断该文件,即将其长度截短到零。丢弃其原有的内容,然后将新的输入加到该文件中。后面我会告诉你怎么修改这种默认行为。

警告:打开已有的文件,以接收输出时,默认将他其长度截短为零,因此原来的内容将丢弃。

打开文件用于接受输入时可能失败。例如,指定的文件可能已经存在,但禁止对其进行访问,因此细心的程序员会检查打开文件的操作是否成功。我会在后面进行介绍。

cin本身被用于作测试条件时,如果最后一个读取操作成功,它将被转换为布尔值,true,否则被转换为false.

警告:

Windows文本文件的每行都以回车字符和换行符进行结尾;通常情况下,C++在读取文件时将这两个字符转换为换行符,并在写入文件时执行相反的转换。有些文本编辑器不会自动在最后一行末尾加上换行符。因此,如果使用的是这种编辑器,请在输入的文本最后按下回车键,然后在保存文件。

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值