目录
一、for循环
语句结构:
for(表达式一;表达式二;表达式三){
语句四;
}
其中表达式一,表达式三可省略但表达式二不可省(因为表达式二是作为判断是否进行循环的条件)
在执行for循环时,先进行表达式一,之后判断表达式二(若可行,则执行语句四,在执行语句四过后,进行表达式三)反之直接跳出for循环。
那么,什么是表达式什么是语句呢?
通俗的来讲便是任何表达式加上“;”都可以成为语句。(但这句话反过来说便不对了)
例如:(1)x>y 可以被看成一个关系表达式,其值被判定为bool值(false或true)
当x>y; 则被视为一个语句
(2)x=100 也是可以被看成一个表达式,当其后面加上分号时则成为了一个语句。
(3)举一个反例 int a 不能被视为一个表达式。(因为它没有值)
for循环中可能用到的运算符以及表达式
一、组合
“+=”这类运算符称之为组合运算符。(如:a+=b,其实质意义是a=a+b)。
*,/,-等皆可利用这种组合运算
二、递增递减
递增递减可分为两大类(前缀和后缀)
为方便理解:1.++a,2.a++。
当你先看到的是谁,那么谁先被执行
即:1中先看到的是加号,则其表达式的值则是先进行+1操作然后把+1后的结果a赋值给a
2中先看到的是a,则其表达式的值则等于a的值,在这条语句执行过后,a的值与1中便会一致+1
注:尽量在书写代码的过程中避免如下代码的存在:
int y=0;x=0;
y = (4+x++)+(3+x++);
在c++中是没有规定在每个子表达式执行过后给x递增还是在整个语句执行过后递增,因此可能会出错。
要分清赋值运算符“=”与关系表达式中的“==”,不可以混淆了。
for循环最后提一下递增递减运算符在指针中的使用:
简要的概述便是:前缀递增递减与解引用运算符(*)的优先级相同:从右往左的方式结合
后缀的则是比前缀的优先级要高,因此:从左往右的方式结合
三、基于范围的for循环(c++11)
当其中的x变为&x时,可以对数组中的元素进行修改等操作。
double prices[5] = {4,2.33,412,2.3,231.2};
for(double x: prices)//x表示数组的第一个元素,该程序是将该数组的五个元素输出出来
cout<<x<<std:endl;
二、while循环
可以理解为:没有初始化和更新部分的for循环,它只有测试条件和循环体
结构为:
while(test-condition){
一条语句/一个语句块(包含多条语句)
}
例如:
int a;
cin>>a;
//语句
while(a>100){
cout<<a<<endl;
}
//语句块
while(a>100){
if(a>150){
cout<<a+1<<endl;
}
}
设置循环的时候的指导原则:
1、循环终止条件。2、首次测试之前初始化条件。3、条件被再次测试之前更新条件
类型别名:
很容易理解,它可以看成是咱们每个人的小名或者是绰号
例如:
typedef int zx
代码含义便是 整型 int 之后还有一个名字 叫做“zx”。
三、do-while循环
do-while与先前两种有着很大的不同的一点:它是一个出口条件循环
那究竟什么是出口条件循环呢?
do-while结构:
do{
//语句/语句块
}while(a);//a充当一个表达式
该循环是一种先进行依次循环体在进行判断是否继续进行。
在实际中如:当用户输入一串数字或字符时,会在输出结束后告诉用户输入的是否正确,并非是在之前就判断。
而先前的两种循环均为先前条件循环,他们也都是各有各的好处,这里不再展开描述。
嵌套循环
什么是嵌套循环?
通俗的来讲,就是一个循环里还有别的循环。
例如:这便是嵌套循环的大致框架,但不会仅限于此。
for(;;){
for(;;){
}
}