第五章 循环与关系表达式

  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》读书笔记之三—循环与关系表达式的更多相关文章

  1. C++ primer plus读书笔记——第5章 循环和关系表达式

    第5章 循环和关系表达式 1. cout.setf(ios_base::boolalpha); cout << (100 > 3) << endl;将输出true,而不是 ...

  2. C++ Primer Plus读书笔记

    第五章 循环和关系表达式 1. 2.类别别名: (1)   #define FLOAT_POINTER float * FLOAT_POINTER pa, pb; 预处理器置换将该声明转换成  flo ...

  3. 《C++ Primer》读书笔记 第一章

    读<C++ Primer>才知道,自己对C++知之甚少... 写个博客记录下自己C++的成长,只是读书笔记,不是对<C++ Primer>知识点的总结,而是对自己在书上看到的以 ...

  4. 《C#图解教程》读书笔记之三:方法

    本篇已收录至<C#图解教程>读书笔记目录贴,点击访问该目录可获取更多内容. 一.方法那些事儿 (1)方法的结构:方法头—指定方法的特征,方法体—可执行代码的语句序列: (2)方法的调用:参 ...

  5. 《C++ Primer Plus》第5章 循环和关系表达式 学习笔记

    C++提供了3种循环: for 循环. while 循环 和 do while 循环 .如果循环测试条件为 true 或非零,则循环将重复执行一组指令: 如果测试条件为 false 或 0 , 则结束 ...

  6. C++ Primer Plus读书笔记(五)循环和关系表达式

    1.前缀运算符的优先级是从右到左,例如: 1 *++p; //这句话的含义是先对p进行++,再取* 2.循环 c++11新增了一种循环方式,有点和python类似,如下: 1 array<int ...

  7. C primer plus 读书笔记第一章

    写在前面: 算法和数据结构是计算机学习的基础,而大部分书籍是用C/C++编写.所以有了把C语言重新学一遍的想法.这个系列主要是记录看C primer plus的一些笔记和部分课后习题的答案,不会总结的 ...

  8. C primer plus 读书笔记第九章

    本章的标题是函数.C的设计原则是把函数作为程序的构成模块. 1.函数概述 函数的定义:函数是用于完成特定任务的程序代码的自包含单元. 使用函数的原因:1.函数的使用可以省去重复代码的编写.2.使得程序 ...

  9. C primer plus 读书笔记第六章和第七章

    这两章的标题是C控制语句:循环以及C控制语句:分支和跳转.之所以一起讲,是因为这两章内容都是讲控制语句. 第六章的第一段示例代码 /* summing.c --对用户输入的整数求和 */ #inclu ...

随机推荐

  1. JavaScript设计模式-2高级类.

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. Kaggle之路,与强者为伍——记Santander交易预测

    Kaggle--Santander Customer Transaction Prediction 原题链接 题目 Description 预测一个乘客在未来会不会交易,不计交易次数,只要有交易即为1 ...

  3. java的instanceof简单使用

    instanceof:是java中用来判断一个对象属于哪个类型的关键字 (instanceof是instance和of两个单词组成,但of并没有大写) eg: public class Test{   ...

  4. a+b+c的N次方展开

    今天在给儿子看笔记本上的照片的时候,偶然发现了2009年手绘的一张a+b+c的N次方展开图,故写下面的博客以记之,为年轻时代的我点个赞! 20年前的我,一个充满激情的且富有专注力的数学发烧友! 10年 ...

  5. js中window对象详解以及页面跳转

    1.window.top.window.location = "index.asp"; 2.window.top.location.href="index.asp&quo ...

  6. 师傅领进门之6步教你跑通一个AI程序!

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由云计算基础发表于云+社区专栏 源码下载地址请点击原文查看. 初学机器学习,写篇文章mark一下,希望能为将入坑者解点惑.本文介绍一些机 ...

  7. vue-pdf的3.3.1版本build后多生成168个js文件

    当同事使用vue-pdf来浏览pdf之后,就发现build之后一堆散乱的js文件,真可怕! 果然google之后是它的原因.参考:Vue-pdf create 168 excess bundles i ...

  8. Hadoop学习笔记(9) ——源码初窥

    Hadoop学习笔记(9) ——源码初窥 之前我们把Hadoop算是入了门,下载的源码,写了HelloWorld,简要分析了其编程要点,然后也编了个较复杂的示例.接下来其实就有两条路可走了,一条是继续 ...

  9. [LeetCode]Longest Palindromic Substring题解(动态规划)

    Longest Palindromic Substring: Given a string s, find the longest palindromic substring in s. You ma ...

  10. 03.CSS选择器-->交集并集选择器

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...