C++primer读书笔记(一)

1.endl操纵符
  效果:结束当前行,并将与设备关联的缓冲区(buffer)中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出都真正写入输出流中,而不是仅停留在内存中等待写入输入流。
//在调试时添加打印语句,这类语句应该保证“一直”刷新流。否则程序崩溃是输出可能还停留在缓冲区中,从而导致程序崩溃位置的判断错误。

2.::作用域运算符

3.注释界定符不能嵌套
注释掉包含界定符对形式注释的代码时,应该用单行注释方式注释掉代码段的每一行。

4.读取数量不定的输入数据
while (std::cin >> value) {
        sum += value;
    }
[注]:实际输入时当遇到文件结束符,或无效输入时,while条件为假,退出循环。
Windows系统的文件结束符:Ctrl+Z,再按Enter

5.不属于标注库的头文件,用""包含

6.使用文件重定向
取代在dos窗口下大量的输入参数
项目-属性-命令参数
$ addItems outfile

7.cout/cerr/clog【参考了另一个博客】
  cout经过缓冲后输出,默认情况下是显示器 。这是一个被缓冲的输出,是标准输出,并且可以重新定向
  cerr不经过缓冲而直接输出,一般用于迅速输出出错信息,是标准错误,默认情况下被关联到标准输出流,但它不被缓冲,也就说错误消息可以直接发送到显示器,而无需等到缓冲区或者新的换行符时,才被显示。一般情况下不被重定向
 /*   对于为什么有cerr和clog
  比如,你的程序遇到调用栈用完了的威胁(无限,没有出口的递归)。你说,你到什么地方借内存,存放你的错误信息?所以有了cerr。其目的,就是在你最需要它的紧急情况下,还能得到输出功能的支持。缓冲区的目的,就是减少刷屏的次数——比如,你的程序输出圣经中的一篇文章。不带缓冲的话,就会每写一个字母,就输出一个字母,然后刷屏。有了缓冲,你将看到若干句子“同时”就出现在了屏幕上(由内存翻新到显存,然后刷新屏幕)。*/

8.数据类型
int/short/long/long long都属于带符号的,通过添加unsigned得到无符号类型
char类型分为char、unsigned char、signed char //其中char表现为有符号或无符号中的一,具体是哪种由编译器决定。

9.选择数据类型的准则(尽可能接近硬件)
 a.当明确知晓数值不可能为负时,选用无符号类型
 b.使用int进行整数运算。实际应用中short常显的太小而long一般和int有一样的尺寸。如果数值超过int范围,选用long long
 c.在算数表达中不使用char或bool,只有正在存放字符或布尔值时才使用他们。因为char类型在一些机器上是有符号的,而在另一些机器上是无符号的,所以使用char进行运算容易出问题。如果需要使用一个不大的整数,那么明确指定它的类型是char或者unsuigned char;
 d.执行浮点运算选用double,这是因为float通常精度不够而且双精度浮点和单精度浮点数的计算代价相差无几。甚至对于某些机器而言double比float运算还快。long double 提供的精度在一般情况下是没有必要的,况且它带来的运行时消耗也不容忽视。
 


你可能感兴趣的:(C/C++)