zoukankan      html  css  js  c++  java
  • C++ primer plus读书笔记——第5章 循环和关系表达式

    第5章 循环和关系表达式

    1. cout.setf(ios_base::boolalpha); cout << (100 > 3) << endl;将输出true,而不是1。

    2. 递增运算符++和递减运算符--

    前缀:修改后使用             后缀:使用后修改

    Y = (4 + x++) + (6 + x++);

    C++没有规定是在计算每个子表达式之后将x的值递增,还是在整个表达式计算完毕之后才将x的值递增,有鉴于此,应该避免使用这样的表达式。

    3. 递增/递减运算符和指针P135

    优先级:后缀 > 前缀 > *

    前缀递增、前缀递减和解除引用运算符的优先级相同,以从右向左的方式进行结合。后缀递增和后缀递减的优先级相同,但比前缀运算符的优先级高,这两个运算符以从左到右的方式进行结合。

    4. 逗号表达式是一个顺序点,它确保先计算第一个表达式,然后计算第二个表达式。

    i = 20, j = 2 * I;//i为20,j为40

    C++规定,逗号表达式的值为第二部分的值。例如上述表达式的值为40。

    逗号表达式的优先级最低。因此cata = 17, 240;被解释为(cata = 17), 240;也就是cata的值被设置为17,240不起作用。

    5. 所有大写字母的编码都比小写字母小,虽然关系运算符不能用来比较C风格字符串,但却可以用来比较字符,因为字符实际上是整形。

    6. 延时程序:

    #include <iostream>

    #include <ctime>

     

    int main()

    {

       using namespace std;

       cout << "Enter the delay time, in seconds: ";

       float secs;

       cin >> secs;

       clock_t delay = secs * CLOCKS_PER_SEC;

       cout << "Startinga ";

       clock_t start = clock();

       while (clock() - start < delay);

       cout << "Donea ";

     

       return 0;

    }

    7. typedef声明类型别名。

    8. C++11增加了一种循环:基于范围(range-based)的for循环。对数组(或容器类,如vector和array)都适用。

    double prices[5] = {4.99, 10.99, 6.87, 7.99, 8.49};

    for (double x : prices)

       cout << x << std::endl;

       如果要修改数组的元素,需要使用不同的循环变量语法:

       for (double &x : prices)

          x = x * 0.80;

       此外,还可以使用基于范围的for循环和初始化列表。

    9. cin.get(ch)函数读取输入中的下一个字符,即使它是空格。头文件iostream将cin.get(ch)的参数声明为引用类型,因此该函数可以修改其参数的值。

    10. Windows 7系统可以按下ctrl + Z和回车键来模拟EOF条件。检测到EOF后,则cin将两位(eofbit和failbit)都设置为1。可以通过成员函数eof()或fail()来查看eofbit是否被设置;如果检测到EOF,则cin.eof()将返回bool值true,否则返回false。

    11. 目前接触到cin.get三个版本:

    cin.get(name, size)接受两个参数:字符串数组名,读取字符数;

    cin.get()不接受任何参数;

    cin.get(ch)接受一个char参数。

    12. 如何理解while(cin.get(ch))?

    istream类提供了一个可以将istream类对象(如cin)转换为bool值的函数;但cin出现在任何需要bool值的地方时,该转换函数被调用。所以while(cin)比!cin.fail()或!cin.eof()更通用,因为它可以检测到其他失败原因,如磁盘故障。

    13. cin.get()的另一个版本,stdio.h中定义了getchar()(还有putchar())。当cin.get()函数到达EOF时,将没有可返回的字符,这时将返回一个用符号常量EOF表示的特殊值。这个常量是在iostream里定义的,通常EOF被定义为-1。

    while(cin.get(ch))等价于while((ch = cin.get()) != EOF)

    也就是说cin.get(ch)返回cin对象,而cin.get()返回字符编码0值。

  • 相关阅读:
    HTML 5 使用 FileReader、FormData实现文件上传
    【JS深入学习】——事件代理/事件委托
    【JS深入学习】——函数创建和重载
    Yii
    YII简单的基于角色的访问控制
    怎样在Yii中显示静态页
    Yii framework 应用总结小窍门(转)
    Yii PHP 框架分析(四)
    Yii PHP 框架分析(三)
    Yii PHP 框架分析(二)
  • 原文地址:https://www.cnblogs.com/lakeone/p/5106539.html
Copyright © 2011-2022 走看看