《C++ Primer Plus》读书笔记之四—分支语句和逻辑操作符

第六章 分支语句和逻辑操作符

  1、&&的优先级低于关系操作符。

  2、取值范围:取值范围的每一部分都使用AND操作符将两个完整的关系表达式组合起来:

  if(age>17&&age<35) // OK

  if(17<age<35) // don't do this!!

  3、!操作符的优先级高于所有的关系操作符和算术运算符。即!>关系操作符>AND>OR。

  4、虽然C++操作符的优先级规则常可能不使用括号便可以编写复合比较的语句,但最简单的方法还是用括号将测试进行分组,而不管是否需要括号!

  5、switch语句中的每一个case标签都必须是一个单独的值,另外,这个值必须是整数(包括char),因此switch无法处理浮点测试。另外case标签值还必须是常量。

  6、使用cin进行输入时,程序将输入视为一系列的字节,其中每个字节都被解释为字符编码。不管目标数据类型是什么,输入一开始都是字符数据——文本数据。然后,cin对象负责将文本数据转为其他类型。

  7、写入到文本文件中的必须步骤:

  #include<fstream> // 里面定义了一个用于处理输出的ofstream类。

  ofstream outFile;// 声明一个ofstream类对象。

  outFile.open("fish.txt"); // 将对象与特定的文件关联起来。若打开已有文件,以接受输出时,默认将其长度截短为  0,因此原来的内容将丢失

  或者 char filename[50]; cin>>filename; outFile.open(filename);

  double wt=125.8;

  outFile<<wt; // write a number to fish.txt

  char line[81]="gfdsygfiuewgfhuidshfuids";

  outFile<<line<<endl; // write a line to fish.txt

  outFile.close() // 使用完文件后,应使用close将其关闭

  注:所有可用于cout的操作和方法(如<<、endl和setf())都可用于ofstream对象;创建好ofstream对象后,便可以像使用cout那样使用它了。

  8、读取文本文件的必须步骤:

  #include<fstream> // 里面定义了一个用于处理输出的ifstream类。

  ifstream inFile;// 声明一个ifstream类对象。

  inFile.open("bowling.txt"); // 将对象与特定的文件关联起来。

  或者 char filename[50]; cin>>filename; inFile.open(filename);

  double wt;

  inFil>>wt; // read a number from bowling.txt

  char line[81];

  inFile.getline(line,81); // read a line of text

  inFile.close() // 使用完文件后,应使用close将其关闭

  注:所有可用于cin的操作和方法都可用于ifstream对象;

  9、检查文件是否被成功打开的方法:is_open()或者good():

  inFile.open("bowling.txt");

  if(!inFile.is_open())=if(!inFile.good())

  {

    exit(EXIT_FAILURE);

  }

  exit()的原型是在头文件cstdlib中定义的,在该头文件中还定义了一个用于操作系统通信的参数值EXIT_FAILURE。函数exit()终止程序。

  10、读取文件的检查:如果遇到EOF,方法eof()将返回true;类型如果不匹配或者遇到EOF,方法fail()将返回true;如果某些预期外的东西可能出现问题,例如文件受损或硬件故障,方法bad()将返回true。不要分别检查这些情况,一种更简单的方法是用good()方法,该方法在没有发生任何错误时返回true。