6.1
空语句就是不执行任何操作的语句,由单一的分号组成,代表空操作。
;
举个例子如下,如果flag==true,那么什么都不执行,else后面的大括号内如果不填入任何语句,就是空语句块,与空语句的用法类似。
if(flag)
;
else {
// your code
}
6.2
参见6.1
6.3
很显然,用逗号操作符代替语句块,显著的降低了代码的可读性。
while(cin >> trans) {
if(total.same_isbn(trans))
total = total + trans;
else
cout << total << endl, total = trans;
6.4
如何删去while循环后面的左右花括号,那么程序的循环体就是紧接着while语言的后一条语句,导致逻辑错乱。
6.5
(a)
if (ival1 != ival2)
ival1 = ival2;
else
ival1 = ival2 = 0;
(b)
if(ival < minval) {
minval = ival;
occurs = 1;
}
(c)
if (int ival = get_value())
cout << "ival = " << ival << endl;
else
cout << "ival = 0\n";
(d)
if (int ival = get_value())
// your code
6.6
悬垂else是指if的个数,多余else的个数,C++使用else匹配最近一个未匹配的if。
6.7
#include <iostream>
#include <string>
#include <vector>
#include <typeinfo>
using namespace std;
int main() {
char ch;
int a(0),e(0),i(0),o(0),u(0);
while (cin >> ch) {
switch (ch) {
case 'a':
case 'A':
++a;
break;
case 'e':
case 'E':
++e;
break;
case 'i':
case 'I':
++i;
break;
case 'o':
case 'O':
++o;
break;
case 'u':
case 'U':
++u;
break;
}
if (ch == '0')
break;
}
cout << "a=" << a << endl;
cout << e << endl;
cout << i << endl;
cout << o << endl;
cout << u << endl;
return 0;
}
6.8
#include <iostream>
#include <string>
#include <vector>
#include <typeinfo>
using namespace std;
int main() {
char ch;
int a(0),e(0),i(0),o(0),u(0), space(0), tab(0), enter(0);
while (scanf("%c", &ch)) {
switch (ch) {
case 'a':
case 'A':
++a;
break;
case &