《c++ Primer Plus 第6版》读书笔记(3)

第6章 分支语句和逻辑运算符

本章内容包括:

  • if 语句
  • if else语句
  • 逻辑运算符,&& 、||、!
  • cctype字符函数库
  • 条件运算符 ?:
  • switch语句
  • continue和break语句
  • 读取数字的循环
  • 基本文件输入输出

(很基础,我捡着重点的写)

条件运算符和错误防范

许多程序员将更直观的表达式variable == value反转为value ==variable,以此来捕获将相等运算符误写为赋值运算符的错误。编写让编译器能够发现错误的代码,比找出错误原因更加容易。

6.2 逻辑表达式

C++中||运算符为顺序点,先修改左侧的值,然后再对右侧的值进行判断。如果左侧的值为true,那么C++不会去判定右侧的表达式。

&&运算符也为顺序点,和||是一样的。

使用&&连接表达式,不要将 if (age >17 &&age <35) 改写成if(17<age<35)。编译器是不会捕获这种错误的,会被识别为:if ((17 < age) < 35)

C++的OR和AND运算符优先级都低于关系运算符。

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

&&、||、!和and、or、not等价,但是C中使用后者需要包含头文件iso646.h。C++不需要。

6.3 字符库函数cctype

C++从C继承了一个与字符相关的,非常相关的函数软件包,可以简化比如确定字符是否为大写,数字,标点符号等工作,头文件为cctype。

cctype中常用的函数:

函数名称 返回值
isalnum() 如果参数是字母数字,即字母或数字,返回true
isalpha() 如果参数是字母,返回true
iscntrl() 如果参数是控制字符,返回true
isdigit() 如果参数是数字,返回true
isgraph() 如果参数是除空格外的打印字符,返回true
islower() 如果参数是小写字母,返回true
isprint() 如果参数是打印字符(包括空格),返回true
ispunct() 如果参数是标点符号,返回true
isspace() 如果参数是标准空白字符,比如空格、换行符、回车、制表符,返回true
isupper() 如果参数是大写字母,该函数返回true
isxdigit() 如果参数是十六进制,返回true
tolower() 如果参数是大写字符,返回小写,否则返回该参数。
toupper() 如果参数是小写字符,返回大写,否则返回该参数。

6.4 ?:运算符

C++中唯一一个三参数运算符。

        exprssion1?exprssion2:exprssion3

exprssion1为true,则表达式为exprssion2的值,否则为exprssion3的值。

6.5 switch语句

C++中的case只是行标签,而不是选项之间的界限。也就是说,如果没有break;那么将依次执行后续的语句。

比起ifelse来说,switch并不是为了处理取值范围而设计的,每个case都需要是一个单独的值,因此无法处理浮点数。

由于switch语句专门用来处理多个if语句的情况,因此,如果选项超过两个,旧代码长度和执行速度来说,switch语句的效率更高。因此当选项不少于3个,应该用switch语句。

6.8 简单文件输入/输出

控制台输入输出使用的头文件是iostream。

文本文件的输入输出,使用的头文件是fstream。

输出

其中定义了用于处理输出的ofstream类。

虽然头文件iostream中预定义好了cout的ostream对象,但是fstream中没有,所以需要自定义自己的ofstream对象。

ofstream outFile;    //outFile an ofstream object
ofstream fout;        // fout an ofstream object

outFile.open("fish.txt");    // outFile used to write to fishh.txt file

char filename[50];
cin >> filename;
fout.open(filename);        // fout used to read specified file


double wt = 125.8;
outFile << wt;            // write a number to fish.txt

char line[80] = "Objects are there."
fout << line << endl;    //  write a line  

outFile.close();
fout.close();

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

打开已有的文件,用来接收输出时,默认会将其中的长度截断为0,原来的内容将丢失。

输入

头文件fstream中定义了ifstream类。<

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Aiky哇

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

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

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

打赏作者

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

抵扣说明:

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

余额充值