C++PrimerPlus学习笔记之循环和关系表达式-创新互联
个人觉得学习编程最有效的方法是阅读专业的书籍,通过阅读专业书籍可以构建更加系统化的知识体系。
一直以来都很想深入学习一下C++,将其作为自己的主力开发语言。现在为了完成自己这一直以来的心愿,准备认真学习《C++ Primer Plus》。
为了提高学习效率,在学习的过程中将通过发布学习笔记的方式,持续记录自己学习C++的过程。
for
循环for
循环可以轻松地完成需要重复执行的任务。
for
循环的组成部分完成下面这些步骤:
- 设置初始值。
- 执行测试,看看循环是否应当继续进行。
- 执行循环操作。
- 更新用于测试的值。
C++循环设计中包括了这些要素,很容易识别。控制部分后面的语句叫作循环体,只要测试表达式为true,它便被执行:
for(initialization; test-expression; update-expression)
body
test-expression
(测试表达式)决定循环体是否被执行。
for
循环是入口条件(entry-condition)循环。这意味着在每轮循环之前,都将计算测试表达式的值,当测试表达式为false时,将不会执行循环体。
update-expression
(更新表达式)在每轮循环结束时执行,此时循环体已经执行完毕。通常,它用来对跟踪循环轮次的变量的值进行增减。然而,它可以是任何有效的C++表达式,还可以是其他控制表达式。
C++循环允许下面这种写法:
for (int i = 0; i< 5; i++)
{//循环内容
}
C++中递增运算符(++
)(名称C++由此得到)和递减运算符(--
)常被用在循环中的运算符,我们可以通过如下代码,查看其使用效果:
#includeusing namespace std;
int main()
{int i = 0;
cout<< i++<< endl;
cout<< i<< endl;
cout<< ++i<< endl;
cout<< i<< endl;
cout<< i--<< endl;
cout<< i<< endl;
cout<< --i<< endl;
cout<< i<< endl;
}
输出结果如下:
0
1
2
2
2
1
0
0
组合赋值运算符表:
操作符 | 作用(L为左操作数,R为右操作数) |
---|---|
+= | 将L+R赋给L |
-= | 将L-R赋给L |
*= | 将L*R赋给L |
/= | 将L/R赋给L |
%= | 将L%R赋给L |
使用逗号运算符将两个表达式合并为一个:
int i = 0;
i++, i++;
cout<< i<< endl;
输出结果为:2
逗号运算符,确保先计算第一个表达式,然后计算第二个表达式。
在所有运算符中,逗号运算符的优先级是最低的。例如:
cats = 17,240;
被解释为:
(cats = 17), 240;
也就是说,将cats
设置为19
,240
不起作用。然而,由于括号的优先级最高,下面的表达式将把cats
设置为240
——逗号右侧的表达式值:
cats = (17,240);
关系运算符表:
操作符 | 含义 |
---|---|
< | 小于 |
<= | 小于或等于 |
== | 等于 |
> | 大于 |
>= | 大于或等于 |
!= | 不等于 |
While
循环While
循环是没有初始化和更新部分的for
循环,它只有测试条件和循环体:
while(test-condition)
body
首先,程序计算圆括号内的测试条件(test-condition)
表达式。如果该表法式为true
,则执行循环体中的语句。与for
循环一样,循环体也由一条语句或两个花括导定义的语句块组成。执行完循环体后,程序返回测试条件,对它进行重新评估,如果该条件为非零,则再次执行循环体。测试和执行将一直进行下去直到测试条件为false
为止。
提示:在设计循环时,请记住下面几条直到原则。
- 指定循环终止的条件。
- 在首次测试之前初始化条件。
- 在条件被再次测试之前更新条件。
记住,语句块是由花括号,而不是由缩进定义的。
C++为类型建立别名的方式有两种,第一种是使用预处理器:
#define BYTE char
这样,预处理器将在编译程序时用char
替换所有的BYTE
,从而使BYTE
成为char
的别名。
第二种方法是使用C++(和C)的关键字typedef
来创建别名:
typedef char byte;
这样,可以将byte
作为char
的别名。
do while
循环与for
循环和while
循环不同,do while
循环是出口条件(exit condition)循环。这意味着这种循环将首先执行循环体,然后再判定测试表达式,决定是否应继续执行循环。如果条件为false
,则循环终止:否则,进入新一轮的执行和测试,这样的循环通常至少执行一次,因为其程序流必须经过循环体后才能到达测试条件。下而是其句法:
do
body
while (test-condition);
四、基于范围的for
循环(C++11)C++11新增了一种循环:基于范围(range-based)的for
循环。这简化了一种常见的循环任务:对数组(或容器类,如vector
和array
)的每个元素执行相同的操作,如下例所示:
double prices[2] = {3.2, 29.1};
for (double x : prices)
cout<< x<< endl;
其中,x
最初表示数组prices
的第一个元素。显示第一个元素后,不断执行循环,而x
依次表示数组的其他元素。因此,上述代码显示全部5个元素,每个元素占据一行。总之,该循环显示数组中的每个值。
要修改数组的元素,需要使用不同的循环变量语法:
for (double &x : prices)
{x = x * 0.8;
cout<< x<< endl;
}
符号&
表明x
是一个引用变量,这种声明让接下来的代码能够修改数组的内容,而第一种语法不能。
cin.get(ch)与cin.get()
属性 | cin.get(ch) | ch=cin.get() |
---|---|---|
传递输入字符的方式 | 赋给参数ch | 将函数返回值赋给ch |
用于字符输入时函数的返回值 | istream对象(执行bool转换后为true) | int类型的字符编码 |
到达EOF时函数的返回值 | istream对象(执行bool转换后为false) | EOF |
二维数组更像是一个表格——既有数据行又有数据列。
C++没有提供二维数组类型,但用户可以创建每个元素本身都是数组的数组。例如:
int personHeightWeight [2][2] =
{{180, 78},
{168, 64}
}
cout<< personHeightWeight [0][1]<
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
当前文章:C++PrimerPlus学习笔记之循环和关系表达式-创新互联
本文网址:http://scyanting.com/article/dhgpdh.html