第5章 循环和关系表达式

1.前缀(prefix)版本和后缀(postfix)版本

后缀版本a++ 表示先计算表达式再a+1;  前缀++a表示a+1后再用新值来计算表达式的值。虽然在程序行为上,两种版本对程序结果不会有什么区别,但由于后缀版本要先复制一个拷贝,然后将拷贝的版本返回。因此,对于内置类型,采用哪种格式不会有差别;但对于用户定义的且有用户定义的递增和递减操作符的类型,前缀格式的效率更高。

2.C-风格字符串的比较

C++将C-风格字符串视为地址。如果word是数组名,则word==“mate”,这句话并不会像我们预期的那样工作,它实际查看的是它们是否存储在相同的地址上。我们应该用C-风格字符串库中的strcmp()函数来比较。而string累字符串可以直接用关系操作符进行比较。如string word; word!="mate";使用了一个关系操作符,!=左边是一个string对象,右边是一个C-风格字符串,这种情况在关系操作符中有重载:至少一个操作数是string对象,另一个操作数可以是string对象,也可以是C-风格字符串。

3.编写延时循环

当需要程序暂时停止一段时间时,需要让程序暂停一下,早期的做法是

long wait=0;

while(wait<10000)

   wait++;

这种方法的问题是,当计算机处理的速度发生变化时,必须修改计数限制。更好的办法是让系统时钟来完成这件工作。

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/1.jpg

下面程序演示了怎样用clock()和头文件ctime来创建延迟循环,该程序以系统时间单位为单位计算延迟时间,而不是以秒为单位,从而避免了在每轮循环中将系统时间转换为秒。

4.类型别名  define  and typedef

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/2.jpg

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/3.jpg

5.cin支持的3种不同模式的单字符输入

5.1 原始的cin输入

下面是输出情况:

  

为什么在输出时省略了空格呢?原因在cin。读取char值时,与读取其他类型一样,cin将忽略空格和换行符。更复杂的是,发送给cin的输入被缓冲,这意味着只有在用户按下回车键后,他输入的内容才会被发送给程序。

5.2 使用cin.get(char)进行补救

该函数可以读取输入的下一个字符,即使它是空格

运行结果:

 

5.3使用哪一个cin.get()

char name[ArSize];

...

cout<<"your name?";

cin.get(name,ArSize).get();

(见第4章相关内容)

6.EOF应用

检测到EOF后,cin将两位(eofbit和failbit)都设置为1.可通过eof()和fail()函数来查看。

常见用法如下:

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/7.jpg

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/8.jpg

7.cin.get(ch)和cin.get()

https://p-blog.csdn.net/images/p_blog_csdn_net/xuanya0214/EntryImages/20090927/4.jpg

测试EOF的cin.get()版本如下:

  

注意这里是把ch申明为int类型。在程序里有char(ch)这样的类型转换。

cin.get(char)成员函数调用通过返回转换为false的bool值来指出已到达EOF,而cin.get()成员函数调用则通过返回EOF值来指出已到达EOF。EOF是在文件iostream中定义的。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值