C++ Primer Plus学习笔记-第五章:循环和关系表达式

第五章:循环和关系表达式

for循环的基本结构:

for(initializationl;test_expression;update_expression)
    body

C++常用的方法是:在for和括号之间加上一个空格,而省略函数名和括号之间的空格;

C++将赋值表达式的值定义为左侧变量的值;运算符<<的优先级比表达式中的运算符要高;

要让cout在显示0和1的时候显示false和true,可以这么做:

cout.setf(ios_base::boolalpha);

当判定表达式修改了内存中的值的时候,我们称这种判定表达式有副作用;

在C++中for循环还可以写成这样子:

for(for-init-statement condition;expression)
    statement;
//说实话我也不知道这到底有什么用
//不过有一点是明确的,用于计数的变量只存在于for循环内,离开循环后自动消失

通常检测不等比检测相等好

string对象类的.size()方法可以获得对象的字符数;

++递增运算符和–递减运算符在对象前面时,先计算值再使用值;在对象后面时,先使用值再计算值;运算符前缀的运算速度比运算符后缀要高;

在C++中,一个分号就是一个顺序点,另外任何完整的表达式都是一个顺序点;

复合语句(花括号包裹的代码块)有一个神奇的特性:在复合语句中定义的变量,离开复合语句后自动销毁;

数组之间不能使用关系运算符,但只要参与运算的双方有string类,就可以使用关系运算符;关系运算符的优先级比算数运算符低;

在比较数组名的时候并不是在比较两个数组是否相等,而是在比较两个数组第一个元素的地址是否相等;

要比较两个字符串要使用标准库中的strcmp(a,b),相等则返回0;

因为字符串是依靠’\0’来结尾的,因此两个不同的数组中存储的字符串可以是相同的;

string字符串可以直接使用双等号来比较,双等号在这里进行了重载;

while循环标准结构

while (test-condition)
    body

string对象不使用’\0’来标记字符串的结束;

省略for循环的表达式时循环会一直执行下去;

头文件中的clock()函数返回系统时间,类型是clock_t;常数CLOCK_PER_SEC是每秒钟包含的单位系统时间数;

有两种方法创建类型别名:#define指令或typedef指令,它们只是给现有类型换皮而不产生实际的新类型;

C++也支持基于范围的for循环:

double price[5]={4.99,10.99,6.87,7.99,8.49};
for (double x : prices)
    cout<<x<<std::endl;
//显然此语法是借鉴python得到的

cin对象支持三种参数列表的情况,原始的cin用于获取字符并自动忽略空白字符;**发送给cin的字符是被缓冲的,这意味着只有在按下空格后输入才开始发送给cinn;**cin.getchar(dt)会将接受到的字符原封不动的写入到dt中不受传值调用的约束;另对于数组cin.get(数组名,数组长度)将写入一行包括换行符(正常写入会加上结束符,因为超出数组长度导致的异常终止需要手动写入换行符);

操作系统中可以使用<和>符号进行输入输出的重定向

在很多操作系统中可以使用Ctrl+Z+Enter模拟文件结束符

检测到EOF后cin会将两位(eofbit和failbit)都设置为1,分别调用cin.eof()或cin.fail()来获取状态信息;

书上的原话:它使用的是fail(),而不是eof(),因为前者可用于更多的实现中;

cin对象检测到EOF标记后,将设置一个cin对象中指示EOF的标记,设置这个标记后cin将停止读入,再次调用cin也不管用,除非调用cin.clear();有些系统中即使使用cin.clear()也无法恢复输入!

cin对象中有一个将结果转换为bool对象的函数,当cin出现在需要bool对象的环境时,该函数就会被调用,另外cin最后一次读取成功时为true,不成功时为false(这可以捕获文件结束之外的异常,比如磁盘故障)

不接受任何参数的cin.get()返回一个接受到的字符;cin.put(ch)显示一个字符;

EOF通常被定义为-1;char类型不能储存EOF,需要int;

注意:cin.get(ch)会返回一个istream对象,这意味着可以将它们拼接起来

二维数组的初始化由一系列都好隔开的一维数组(用花括号扩起)组成;在输出中使用制表符比使用空格的排版效果好;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值