C++ 循环和关系表达式(四)上

    科技2025-11-19  31

    11.i++和++i、- -i和i- - ++:递增运算符(increment operator) - - :递减运算符(decrement operator)

    i++:先取值再加1 ++i:先加1再取值 i- - :先取值再减1 - -i :先减1再取值

    2.for循环 C++语法将整个for看作一条语句,虽然循环体可以包含一条或多条语句 可以理解成for(初始化;测试表达式;更新测试的值)

    如图所示,首先 ①初始化i=0;(loop initiallization) ②执行测试i<5,看看循环是否应当继续进行,显然可以继续进行(loop test) ③执行循环体,花括号{}内的语句(loop body)cout<<“handsome->zhou”<<endl ④更新用于测试的值i++(loop update)

    其中测试表达式部分在C++中,并没有被限制只能为真或假,可以使用任意表达式,只不过C++将把结果强制转换为bool类型,因此值为0的表达式将被转换为bool值false,导致循环结束。 3.表达式与语句 从b的赋值表达式来看,C++是允许这么做的,但不意味着应鼓励这么做 x=y=z可以看出赋值运算符是从右向左结合的。

    cout在显示bool值之前将它们转换为int,但cout.setf(ios::boolalpha)函数调用设置了一个标记,该标记命令cout显示true和false,而不是1和0

    x+5;是一条有效的C++语句,只不过没有完成任何有用的工作

    4.非表达式和语句

    5.回到for循环

    ⭐修改步长 ⭐访问字符串 6.递增递减的特殊情况

    7.副作用和顺序点 副作用(side effect)指的是在计算表达式时对某些东西(如存储在变量中的值)进行了修改; 顺序点(sequence point)是程序执行过程中的一个点,在这里,进入下一步之前将确保对所有的副作用都进行了评估,在C++中,语句中的分号就是一个顺序点。

    8.前缀格式和后缀格式

    这里前缀和后缀的副作用都是在程序进入下一步之前完成,这里看上去效果是相同的。但执行速度可能会有细微的差别,对于内置类型和当代的编译器而言,这看似不是什么问题。C++允许你针对类定义这些运算符,在这种情况下,用户这样定义前缀函数:将值加1返回结果;但后缀版本会先复制一个副本将其加1,然后将复制的版本返回,故对于类而言,前缀版本的效率比后缀版本高。所以对于内置类型采用哪种格式不会有差别;但用于用户定义的类型,如果有用户定义的递增和递减运算符,则前缀格式的效率更高。

    9.递增/递减运算符和指针

    用以下两张图解释

    10.复合语句

    代码块由一对花括号和它们包含的语句组成,被视为一条语句,从而满足句法的要求。 所以一条复合语句就是用两个花括号来构造而成的

    可以看出在语句块中定义一个新的变量,则仅当程序运行该语句块中的语句时,该变量才存在.

    在执行语句时语句声明的新变量x会隐藏旧变量;在外部语句旧变量再次可见。

    11.逗号运算符 逗号运算符允许将两个表达式放到C++句法只允许放一条语句的地方。

    下面列举一个反转string类对象的内容的例子

    在所有运算符中,逗号运算符的优先级是最低的

    12.关系表达式 关系运算符<、<=、==、>、>=、= 关系运算符的优先级比算术运算符低 x+3 > y-2 对应于 (x+3) > (y-2) 而不是x+(3>y)-2

    需要小心: 第一个for循环是正确的,当数组遇到19则会结束循环 第二个for循环是测试表达式永远为真,因为永远赋值为20,所以会无限循环。最糟糕的是,该程序可能导致其他应用程序无法运行,导致不得不重新启动计算机

    13.C风格字符串的比较

    前面有提到过数组名是数组的地址,同样的上面的关系表达式不是判断两个字符串是否相同,而是查看它们是否存储在相同的地址上。两个字符串的地址是否相同呢?答案是否定的,虽然它们包含相同的字符。 应该使用C风格字符串库中的strcmp()函数来比较。该函数接受两个字符串地址作为参数。这意味着参数可以是指针、字符串常量或字符数组名。 两个字符串即使存储在长度不同的数组中,也可以是相同的 for循环的测试条件使用strcmp()

    事实上测试表达式strcmp()判断出两个字符串不相同取值不为0即取true 这样的话可以看出比计数循环要方便的多

    —————————————————————————上一篇:C++ 复合类型(三)下

    —————————————————————————下一篇:C++ 循环和关系表达式(四)下

    Processed: 0.016, SQL: 9