• C++_基础3-循环和关系表达式


    这一部分内容节选自《C++ Primer Plus》的第五章

    程序需要有执行重复的操作和进行决策的工具。

    ===========================================

    5.1 for循环

    初始化、循环测试、循环体、循环更新

    5.1.1 for循环的组成部分

    for循环为执行重复的操作提供了循序渐进的步骤:

           设置初始值

           执行测试,看看循环是否应当继续进行

           执行循环操作

           更新用于测试的值

    格式

           for(initialization; test-expression; update-expression)

                  body

    值为0的表达式被转换为bool值为false;值为非0的表达式被转换为bool值为true;

    for循环是入口条件循环。这意味着在每轮循环之前,都将计算测试表达式的值。

    更新表达式:在每轮循环结束时执行,用来对跟踪循环轮次的变量的值进行增减。

    每个表达式都有值;

    赋值表达式的值定义为左侧成员的值;

    表达式:age =100

    语句:  age =100;

    C++允许for循环的初始化部分声明变量。这种行为在最初被认为不合法,因为声明不是表达式。后来定义了一种新的表达式——声明语句表达式来合法化。

     

    5.1.2 回到for循环

     

    5.1.3 修改步长

    修改更新表达式来修改步长;

     

    5.1.4 使用for循环访问字符串

    for循环提供了一种依次访问字符串中每个字符的方式。

    5.1.5 递增运算符(++)和递减运算符(--)

    前缀版本位于操作数的前面;

    后缀版本位于操作数的后面;

    这两个版本对操作数的影响是一样的,但是影响的时间不一样;

    5.1.6 副作用和顺序点

    副作用:(side effect)指的是在计算表达式时对某些东西做了修改;

    顺序点:程序执行过程中的一个点,在这里,进入下一步之前将确保对所有的副作用都进行了评估。

    C++中语句中的一个分号就是作用点;

    完整表达式:不是另一个更大表达式的子表达式;

    C++11中不再使用顺序点这个概念了。

    5.1.7 前缀格式和后缀格式

     

    5.1.8 递增/递减运算符和指针

    将递增/递减运算符用于指针时,将把指针的值增加其指向的数据类型占用的字节数。

    *和递增/递减运算符结合使用:

    *++ptr 先递增后再解除引用;

    *ptr++ 先解除饮用后再递增;

    5.1.9 组合赋值运算符

    +=  -=   *=   /=   %=

    5.1.10 复合语句(语句块)

     

    5.1.11 其他语法技巧-逗号运算符

    逗号表达式是一个顺序点;

    5.1.12 关系表达式

     

    5.1.13 赋值、比较和可能犯的错误

    == 和 = 不一样

    5.1.14 C-风格字符串的比较

    word == “mate”;

    word是一个数组名,是首元素的地址,“mate”是一个地址;

    所以上述表达式的意思是判断两个地址是否相等。而不是比较字符串是否相等;

    字符串是由结尾空字符决定的,而不是由数组长度决定的。

    5.1.15 比较string类字符串

    会比C-风格字符串简单,因为这些类设计能够让您使用关系运算符来比较。

    之所以可以,是因为类函数重载了(重新定义)了运算符。

    ===========================================

    5.2 while循环

    while循环是没有初始化和更新部分的for循环;

    while ( test-condition )

           body

    程序计算圆括号内的测试条件表达式。如果该表达式为true,则执行循环体中的语句。

    循环体也是由一条语句或两个花括号定义的语句块组成的。

    执行完循环体后,程序返回测试条件,对它进行重新评估。

    如果条件非零,则执行循环体。如果条件为零,则不执行循环体。

    如果希望循环能够结束,就需要在循环体中添加影响测试条件表达式的操作。

    while循环也是一种入口条件循环。

    循环可以将测试条件中使用的变量加1或从键盘输入读取一个新值。

     

    易错:

           分号结束语句

           while (name[i] != ‘’);  //该分号将结束while循环。循环体为空语句。

     

           用缩进而不是花括号表示循环体,会导致循环体表示错误。

    编写延时循环

    ===========================================

    5.3 do while循环

     这是出口条件循环;

    这种循环将首先执行循环体,然后再判定测试表达式,决定是否继续执行循环。

    ===========================================

    5.4 基于范围的for循环

    简化了常见的循环任务,对数组或容器类的每个元素执行相同的操作。

    ===========================================

    5.5 循环和文本输入

    循环完成的最常见任务:逐字符地读取来自文件或键盘的文本。

    哨兵字符,程序要用循环来读取来自键盘的文本输入,则必须有办法知道何时停止读取。

    cin.get(ch),传递参数额工作方式与C语言不同。是能够修改ch变量的值的。

     

    cin.get(name,ArSize)

    cin.get()

    cin.get(ch)

    函数重载的OOP特性。

     

    检查文件尾技术:EOF,键盘输入模拟文件尾,

    EOF结束输入:cin方法检测到EOF时,将设置cin对象中一个指示EOF条件的标记。

     

    cin.get()和cout.put()返回的是一个对象,而不是读取或显示的字符。

    和getchar()、putchar()类似;字符的I/O函数;

    cin.get()如何处理EOF,当该函数达到EOF时,将没有可返回的字符,它将返回一个用符号常量EOF表示的特殊值。在程序中使用EOF即可,其实值为-1,不对应任何ASCII码字符。

    != 优先级高于 = ;

    5.5.1 使用原始的cin进行输入

     

    5.5.2 使用cin.get(char)进行补救

     

    5.5.3 使用哪一个cin.get()

     

    5.5.4 文件尾条件

     

    5.5.5 另一个cin.get()版本

    ===========================================

    5.6 嵌套循环和二维数组

    ===========================================

    5.7 总结

    3种循环

    关系表达式

    嵌套循环、二维数组

    cin.get()函数重载

  • 相关阅读:
    mybatis Column 'XXX' in where clause is ambiguous 错误
    IDEA 代码提示不区分大小写
    接口安全问题
    spring 事务问题
    js问题: is not a function
    Uncaught TypeError: form.attr is not a function 解决办法
    springmvc 跳转页面或者返回json
    ajax 跳转页面时添加header
    maven工程 添加本地jar依赖
    mysql 创建备份表
  • 原文地址:https://www.cnblogs.com/grooovvve/p/10467759.html
Copyright © 2020-2023  润新知