C++学习笔记(四)

循环、关系表达式、分支和逻辑操作符、循环读取数字的错误处理

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数组中的数据处理

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值