C++循环与分支语句、表达式与逻辑运算符
C++循环与分支语句、表达式与逻辑运算符
表达式
在C++中所有表达式都有值,而赋值表达式的值等于其左部分,可以使用连等为多个变量赋同一个值
a=b=c=1;
C风格常见for循环如下:
int i=0;
for(i=0;i<=10;i++){
//
}
这表明for关键字括号中的第一个参数为一个表达式
然而C++中常见for循环如下:
for(int i=0;i<=10;i++){
//
}
int i=0 不再是一个表达式,而是一个声明语句。实际上C++对for关键字的语法进行了修改,使其从分号分割的三个表达式转变为一个语句后接若干表达式
初次之外应该注意到c风格的for循环定义的i是外部变量,而下述的for循环i被定义为for循环代码块内变量。二者作用域有所区别
副作用与顺序点
副作用指的是计算表达式时进行了某些变量修改。而顺序点指的是程序执行的一个里程点,在经过里程点之前,程序应将里程点之前的表达式全部计算完毕。
y = ( 4 + x++) + ( 6 + x++ );
其中的两个x++均不是完整表达式,因此程序直到遇到顺序点(分号)时才会保证两个x++的运算完毕。而在此之前,x++的副作用什么时候产生是不可预测的。您应该极力避免使用这种表达式。
逗号表达式
逗号是除分号之外的又一个顺序点,即逗号保证其之前的表达式计算完毕。
其常规作用是将若干语句合并成一个代码块。
逗号表达式的值使其最后一个子表达式的值。
基于范围的for循环
C++11中提供了基于范围的for循环(就像Python那样)
int a[]{1 ,2,3,4,5,6};
for(int i : a)
cout<<i<<" ";
i将自动遍历a中的所有元素
上述写法只能取值,如果想对数组或容器中元素进行修改,需要使用引用变量
int a[]{1,2,3,4,5,6};
for(int &i:a)
cout<<i<<" ";
此时对i的修改会反应到a中
逻辑运算符
本节仅想提一点,C++中的逻辑运算符可以直接使用英文单词的表达方式
true and false//ok