循环、关系表达式、分支和逻辑操作符、循环读取数字的错误处理
1. cout.setf(ios_base::boolalpha) cout在显示bool值前将他们转化为Int,而调用这个函数可以使cout显示true和false
2. 前缀函数a++与后缀函数++a:当用户对于类定义的前缀函数——将值加一,然后返回结果;后缀函数:先复制一个拷贝,将其加一。然后将复制的拷贝返回。因此对于类而言前缀版本比后缀版本效率高。
3.由于前缀递增、前缀递减和解除引用操作符优先级相同,因此以从右到左的顺序进行结合,:如*++pt 先算++后算*,而++*pt先算*后算++。
4.省略for语句中的循环条件时,如for(;;) body 这种情况,表达式结果为true,将会一直循环。
5.头文件ctime中定义的CLOCKS_PER_SEC,该常量表示每秒钟包含的系统时间单位数。利用clock()函数获取当前程序开始执行后所用的系统时间(单位不是秒),除以这个常量后能得到以秒为单位的时间。同时,ctime将clock_t作为clock()函数返回类型的别名。
6.C++类型建立别名的方式有两种:一是#define BYTE char 在预处理器在编译程序时将char替换为BYTE,第二种是使用C++和C关键字typedef建立别名,如typedef char byte 。
#define 的方法不适用于变量。typedef不会创建新类型,只是声明别名。
7. || 或 操作符是一个顺序点。也就是说,先修改左边的值,再对右边的值进行判定。
如: i++<6 || i==j
假设i为10,则在对 i 和 j 进行比较时, i 的值将为11。如果左侧表达式为true,则不会再对右侧 表达式进行判定了。
同样的&&也是顺序点,如果左侧表达式为false则不会对右侧表达式进行判断。
8.指针数组:数组中每个地址存储的内容为指针。
9.操作符优先级: ! 操作符 大于 关系操作符 大于 逻辑操作符(与、或)
10.关于字符函数库 cctype(C中的ctype.h),其中需要判断时,除最后两个函数其他都返回true或false
isalnum(ch)判断ch是否是字母或数字
isalpha(ch)判断ch是否是字母
isblank(ch)判断ch是否是空格或水平制表符
iscntrl(ch)判断参数是否是控制字符
isdigits(ch)判断ch是否是数字
islower(ch)判断ch是否是小写字母
ispunct(ch) 判断ch是否是标点符号
isspace(ch)判断字符是否是空白(如换行符、空格、制表符)
isupper(ch)判断ch是否是大写字母
isxdigits(ch)判断ch是否是十六进制的数字
tolower(ch)如果ch是大写字符返回其小写,否则返回该参数
toupper(ch)如果ch是小写字符,则返回其大写,否则返回该参数
11.C++中的swich-case语句中,case标签只是行标签,而不是选项之间的界限,即程序调到switch中的特定代码后悔依次执行之后的所有语句,包括其他case语句,除非碰到了break。并不是执行一个case时如果没有对应的break,会在下一个case处自动停止。
如:
while(...)
{
case 'a':
case 'A': cout <<"xxxxx\n";
break; //由于输入A后有break,因此如果输入a,程序将接着执行case 'A'后的语句;
}
12.switch的限制:switch中的每一个case标签都必须是一个单独的整数值(或char),switch 无法处理浮点测试,且标签必须是 常量。
13.break和continue 的区别:break可以在switch语句或任何循环中使用,使程序调到switch或循环后的语句处执行,而continue语句用于循环中,让程序跳过循环体中余下的代码并开始新的循环。
14.一个简单的错误处理方法;
当对一个数组int golf [Max] 进行输入时,希望对输入为非数值型数字进行简单错误处理,可以采取如下方法:
while(!(cin>>golf[i] )) //当输入为数值型时,cin为true,表达式为false,不进行while循环的处理
//当输入为非数值型,cin为false,表达式为true,进行错误处理
{
cin.clear(); //首先采用cin的函数clear()方法重置输入
//如果省略这条语句,程序将拒绝继续读取输入
while(cin.get() != '\n')
continue; //调用cin的get函数,清空输入缓冲区中\'n'前的所有字符内容,从而删除这一行中的错误输入
cout<<"Please enter a number: ";
}
{....} //此处进行golf数组中的数据处理