《C++ Primer Plus》读书笔记之三—循环与关系表达式
第五章 循环与关系表达式
1、表达式是值或者值与操作符的结合,每个C++表达式都有值。表达式到语句的转换只要加一个分号就可以完成。但是,反过来,从语句中删除分号,并不一定能将它转化成表达式。
2、前缀与后缀操作符:虽然选择使用前缀还是后缀对程序的行为没有影响,但执行速度可能有细微的差别。对于内置类型和当代编译器而言,这看似不是什么问题。然而,C++允许您针对类定义这些操作符,在这种情况下,用户这样定义前缀函数:将值加1,然后返回结果;但后缀版本首先复制一个拷贝,将其加1,然后将复制的拷贝返回。因此,对于类而言,前缀版本的效率比后缀版本高。
3、递增/递减操作符和指针:前缀递增、前缀递减和解除引用操作符(*)的优先级相同,以从右往左的方式进行结合。后缀递增和后缀递减的优先级相同,但比前缀操作符的优先级高,这两个操作符以从左往右的方式进行结合。例如:
*++p ;先将++应用于p,然后将*应用于被递增后的p
++*p;先取得p的值,然后将这个值加1,p指向不变
(*p)++;先对指针解除引用,然后将++应用于解除引用的这个值,p指向不变
*p++;后缀操作符优先级更高,这意味着将操作符用于p,而不是*p,因此对指针递增。然而后缀操作符意味着将对原来的地址而不是递增后的新地址解除引用,但语句执行完毕后,p的值将递增一个。
4、逗号操作符的优先级是最低的,逗号表达式的值是最后一个表达式的值;关系操作符的优先级比算术运算符低,所以有:
x+3>y-2等价于(x+3)>(y-2)
5、任何有效的表达式都可以用作for循环的测试条件,非零值为true,零值为false(用在for循环犯错了,死循环)
6、C-风格字符串的比较:strcmp()函数,该函数接受两个字符串的地址作为参数。这意味着参数可以是指针、字符串常量或者字符数组名。相同,返回0;第一个大,返回负数;第二个大,返回正数。
7、string类字符串的比较:使用关系操作符。因为类函数重载了这些操作符。
8、假如有char ch;然后用cin>>ch;输入了一个字符串,当用cin一个一个字符的读入的时候,cin将忽略空格和换行符接着往下读。但是!如果我们不想忽略空格呢?赶紧用cin.get(ch);来补救。具体地说,成员函数cin.get(ch);读取输入中的下一个字符(即便它是空格),并将其赋给变量ch。注:①发送给cin的输入被缓冲。这意味着只有用户按下回车键后,他输入的内容才会被发送给程序。②头文件iostream将cin.get(ch)的参数声明为引用类型,为的就是能在过程中修改ch的值!按值传递的话不能修改ch的值!!
9、文件尾条件(EOF):检测到EOF后,cin将两位(eofbit和failbit)都设置成1.可以通过成员函数eof()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回true,否则返回false。同样,如果eofbit或者failbit被设置成1,则fail()成员函数返回true,否则返回false。
while(cin.fail()==false) // test for EOF 或者while(!cin.fail()) 或者 while(cin) // while input is successful 这个更通用
注:cin.get();返回输入中的下一个字符;cin.get(ch)方法的返回值是一个cin对象。不过当cin出现在需要bool值的地方(如while循环的测试条件中)时,istream类调用可以将istream对象(cin)转换成bool值的函数!!
《C++ Primer Plus》读书笔记之三—循环与关系表达式的更多相关文章
- C++ primer plus读书笔记——第5章 循环和关系表达式
第5章 循环和关系表达式 1. cout.setf(ios_base::boolalpha); cout << (100 > 3) << endl;将输出true,而不是 ...
- C++ Primer Plus读书笔记
第五章 循环和关系表达式 1. 2.类别别名: (1) #define FLOAT_POINTER float * FLOAT_POINTER pa, pb; 预处理器置换将该声明转换成 flo ...
- 《C++ Primer》读书笔记 第一章
读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...
- 《C#图解教程》读书笔记之三:方法
本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头—指定方法的特征,方法体—可执行代码的语句序列: (2)方法的调用:参 ...
- 《C++ Primer Plus》第5章 循环和关系表达式 学习笔记
C++提供了3种循环: for 循环. while 循环 和 do while 循环 .如果循环测试条件为 true 或非零,则循环将重复执行一组指令: 如果测试条件为 false 或 0 , 则结束 ...
- C++ Primer Plus读书笔记(五)循环和关系表达式
1.前缀运算符的优先级是从右到左,例如: 1 *++p; //这句话的含义是先对p进行++,再取* 2.循环 c++11新增了一种循环方式,有点和python类似,如下: 1 array<int ...
- C primer plus 读书笔记第一章
写在前面: 算法和数据结构是计算机学习的基础,而大部分书籍是用C/C++编写.所以有了把C语言重新学一遍的想法.这个系列主要是记录看C primer plus的一些笔记和部分课后习题的答案,不会总结的 ...
- C primer plus 读书笔记第九章
本章的标题是函数.C的设计原则是把函数作为程序的构成模块. 1.函数概述 函数的定义:函数是用于完成特定任务的程序代码的自包含单元. 使用函数的原因:1.函数的使用可以省去重复代码的编写.2.使得程序 ...
- C primer plus 读书笔记第六章和第七章
这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...
随机推荐
- JVM虚拟机指令
参考及转载: (1)https://blog.csdn.net/qq_33301113/article/details/73717855 (2)https://blog.csdn.net/wangxf ...
- python-锁机制
锁 Lock() Lock(指令锁)是可用的最低级的同步指令.Lock处于锁定状态时,不被特定的线程拥有.Lock包含两种状态——锁定和非锁定,以及两个基本的方法. 可以认为Lock有一个锁定池,当线 ...
- 微服务Kong(四)——添加插件
在本节中,您将学习到,如何配置使用KONG的插件来管理您的API.KONG的核心原则之一就是通过插件来实现API的扩展.插件可以使您更为简单的扩展和管理您的API. 在以下的步骤中,您将通过配置key ...
- Java新特性之Nashorn的实例详解
Nashorn是什么 Nashorn,发音“nass-horn”,是德国二战时一个坦克的命名,同时也是java8新一代的javascript引擎--替代老旧,缓慢的Rhino,符合 ECMAScrip ...
- R语言 删除变量rm函数
变量可以通过使用 rm()函数来删除.下面我们删除变量var.3.然后再打印变量时出现异常错误. rm(var.3) print(var.3) 当上面的代码执行时,它产生以下结果: [1] " ...
- webstorm软件小技巧
1.使用tab可以方便的生成代码片段 调出setting,搜索live template 在javascrpt 模板线面点击"+" 添加一个模板 fun 模板内容如下 functi ...
- Mac上微信小程序官方开发工具卡死的问题
Mac上微信小程序官方开发工具打开后卡死,无法操作,也关不掉,解决方案: 三步: 1.在应用中删除“微信web开发者工具” 2.删除一下几个配置和缓存文件: 1.-/Library/Applicati ...
- 十一:image 图片
属性名 类型 默认值 说明 src String 图片资源地址 mode String 'scaleToFill' 图片裁剪.缩放的模式 binderror HandleEvent 当错误发生 ...
- C# List用Lambda表达式排序
降序: lstroot.Sort((x,y)=>y.static_count.CompareTo(x.static_count)); 升序: lstroot.Sort((x,y)=>x.s ...
- "类工厂模式"改写SqlHelper
看到标题您一定很疑惑,23种经典设计模式什么时候多了一个"类工厂模式",稍等,请听我慢慢道来. 实践是检验真理的唯一途径.最近用了"类工厂模式"改写了我公司的S ...