- For 循环中省略了测试条件时,将认为条件为true。
clock_t
为系统时间的类型名的别名,因此无论系统时间是long
还是unsigned long
,都可以用clock_t
声明。CLOCKS_PER_SEC
定义了系统时间与秒的换算关系。typedef
与#define
的区别是define
在声明多个变量时候只能拿别名替换一次,如果遇到#define byte char*
然后用byte a,b
声明两个变量,就会变为char* a,b
。这就是预处理器的作用——讲代码做一些自动的“复制粘贴”。C++11开始提供了基于范围的
for
循环,主要用于循环容器变量内部的值。1
2
3
4for(int x: {2, 3, 4, 5, 6})
{
cout<<x<<endl;
}三种不同的输入字符的方法进行比较(==以后应该单独开一个博客写==)
cin
忽略空格和换行符,即使输入了也不会读取。发送给cin
的输入被存到缓冲区,只有在用户按下回车后,输入的内容才会发送给程序。cin.get(ch)
将读取一行输入,然后将其赋值给ch
。这种输入方式仍然将输入先存到缓冲器,按下回车后发送给程序。
- UNIX通过
ctrl+D
在键盘模拟文件尾条件。 - 如果要想修改函数外的值,一定要在声明的时候将该参数声明为引用,或者传递该参数的地址。
因为C++支持输入输出的重定向,所以如果输入的是文件,我们就需要检测文件的EOF(end of file)。如何检测呢?最常见的方法是:
1
2
3
4
5
6cin.get(ch);
while(cin.fail()==fail)
{
...
cin.get(ch);
}更高效的方法是:
1
2
3while(cin.get(ch){
...
}因为
cin.get(ch)
的返回值是cin
,而cin
会在需要bool
值的位置自动返回bool
量,如果成功则为true
。- EOF是一个已经定义好的常量,如果用
cin.get()
函数,那么直接把新读取的字符与EOF做比较就可以了。注意:有些时候不允许将char
类型与EOF作比较,那时需要强制类型转换到int
。 - 赋值语句的值为左操作数的值
- 用
cin.get(ch)
更加符合面向对象的原则,可以将多个调用串联起来,因为每次cin.get(ch)
都会返回一个cin
对象,所以cin.get(ch1).get(ch2)
是合法的。 - 当每一行初始化的数组长度不同时(主要指的是char数组,即字符串),可以将长度不同的字符串组成的数组初始化为
char
指针数组。 cin
忽略空格、换行符和制表符。