第五章 循环和关系表达式

for和while循环是入口循环,而do while是出口循环。

P134

副作用和顺序点:

副作用(side effect)指的是计算表达式时对某些变量进行了修改。

顺序点(sequence point)是程序执行过程的一个点,在进行下一步之前将确保对所有的副作用都进行了评估。

前缀格式和后缀格式:

在写代码的过程中应尽量避免:

y = (4 + x++) + (6 + x++);

这样的操作。

前缀函数将值加1,然后返回结果。

后缀函数先复制一个副本,将其加1,然后将复制的副本加1。

显然前缀版本的效率要高。

后缀运算符的优先级要高于指针运算符‘*’。

组合赋值运算符(语句块):

用花括号括起来的语句块中定义的变量的作用域只为该语句块。

逗号运算符:

允许将两个表达式放到C++句法只允许放一个表达式的地方。

例:

int i, j;//逗号是一个列表分隔符
for(i = 0, j = 5; i < j; i++, j--)//逗号运算符,被当做一个顺序点
{
  pass    
}

注:逗号运算符的优先级是最低的。

等待一段时间:编写延时循环

 1 #include<iostream>
 2 #include<ctime>
 3 int main()
 4 {
 5     using namespace std;
 6     cout << "CLOCKS_PER_SEC" << CLOCKS_PER_SEC << endl;
 7     float delay_s;
 8     cin >> delay_s;
 9     clock_t delay = CLOCKS_PER_SEC*delay_s;//常量CLOCKS_PER_SEC,定义了每秒钟的系统时间单位数
10     clock_t start = clock();//返回程序开始执行后的系统时间
11     while(clock()-start < delay);
12     cout << "end" << endl;
13     system("pause");
14     return 0;
15 }
clock_t作为clock()返回类型的别名。
C++定义别名的方式有两种:
1. 预处理器
#define BYTE char

2. 使用关键字typedef来创建别名

typedef char BYTE;

typedef是更加的选择,定义变量时不需要原类型替换。

循环和文本输入:

读取char时,和读取其他类型一样,cin将忽略空格和换行符。

cin.get(char)将会读取输入中的下一个字符,即使是空格。

EOF结束输入:

EOF为文件尾结束标志,EOF为-1,键盘输入时用组合键Ctrl+z模拟文件尾。

当到达文件尾时设置两个标志位:eofbit和failbit,设置值位1 ,此时不再接收任何输入流。

istream对象的成员函数eof()和fail()返回这两个标志位的状态(是否被设置)。

istream对象的成员函数clear()可以重置这两个标志位。

 1 #include<iostream>
 2 
 3 int main()
 4 {
 5     using namespace std;
 6     char pc;
 7     cin.get(pc);
 8     //用ctrl+l组合的键盘输入来模拟文件尾EOF,检测到EOF后,两个标志位都被设置为1.
 9     while (cin.eof() == false) //eof()查看eofbit是否被设置
10 //    while (cin.fail() == false) //fail()查看failbit是否被设置
11     {
12         cout << pc;
13         cin.get(pc);
14     }
15 
16     cin.clear();
17 
18     char *se = new char [20];
19     cin >> se;
20     cout << se << endl;
21     delete [] se;
22 
23     system("pause");
24     return 0;
25 }

C++与C的输入输出:

ch = cin.get()的工作方式类似于C语言的getchar(),将字符编码作为int值返回。

cin.get(ch)返回一个istream对象。

cout.put(ch)类似于C语言的putchar(),只不过其出入参数为char,而不是int。

原文地址:https://www.cnblogs.com/sungnox/p/7588464.html