《C++大学教程》学习笔记 第五章:控制语句(第二部分)

学习笔记:

1、流运算符格式化数值输出。setw(4)规定下一个输出值占用的域宽是4,如果输出少于4个字符,则默认情况下向右对齐。如果输出的值大于4个字符,那么域宽将拓展到整个值得实际宽度。(要指定对齐方式可以使用流运算符「left」或「right」)

#include <iostream>
#include <stdlib.h>
#include <iomanip>

using namespace std;

int main(int argc, char *argv[])
{
  double a=2.25365;
  double b=3.26533;
  double c=88;
  cout << "Without 「fixed」" << endl;
  cout << setprecision(2) ;
  cout << "The value of A: " << a << endl ;  // 输出 2.3  ←不是保留两位么?怎么会只有一位。 疑问? 
  cout << "The value of B: " << b << endl ;  // 输出 3.3 (四舍五入) 
  cout << "The value of C: " << c << endl ;  //输出 88 
  
  cout << endl ;
  cout << "After 「fixed」 " << endl ;
  cout << fixed  ; //指示以后输出数值时强制输出到小数点后2位。 
  cout << "The value of A: " << a << endl ;  // 输出 2.25 
  cout << "The value of B: " << b << endl ;  // 输出 3.27 (四舍五入) 
  cout << "The value of C: " << c << endl ;  // 输出 88.00 
  
  system("PAUSE");	
}
结果:

《C++大学教程》学习笔记 第五章:控制语句(第二部分)

2、粘性设置。某些设置可能需要一直使用,比如强制输出两位的小数位,那我们可以先在输出前进行设置,使之后的输出都遵守这种格式,这就是「粘性设置」。

3、使用 switch 多路选择的时候,加入下列语句可以忽略换行符、制表符和空格:

case '\n':  //ignore newlines
case '\t':  //tabs
case ' ': 	//and spaces input 
	break;  //exit switch

4、使用cin.get()方法可以从读入一个字符。

5、EOF表示 End of File ,是用于标识「文件结束」的一个符号,在不同系统中对应不同的快捷方式,在WIN系统中是「Ctrl+Z」,而在UNIX/LINUX中是「Ctrl+D」。并且EOF在不同的系统具有不同的值(一般取为-1),但是不能直接输入-1或EOF这三个字符作为这个标记值。

6、switch语句中,如果提供同样的case标签将产生一个变异错误;如果提供的case标签虽然具有不同的表达式,但求值结果相同,则也产生一个编译错误。例如,把「case 4+1:」和「case 3+2:」放一起会是一个编译错误,因为它们等价于「case 5:」。


编程习惯:

1、不要再循环内部放置那些不会发生改变的表达式,因为这样做会降低效率。但是现在许多高级的优化编译器也会在生成机器代码的时候自动把表达式放到循环之外。(但是还是要养成好习惯)

2、switch 最好提供 default 情况,这样可以保护你更好地找到程序的错误。

3、要实现高质量的软件工程和获得最佳性能之间总是很难平衡,一个方面的提升通常是以牺牲另外一个为代价的。为了兼顾两者的性能,一般可以采用如下的经验:首先,力求代码简单而正确;然后,使其快而小。

4、在书写类似于x==7形式的条件时,通常将常量放在左边,变量放在右边,这样当程序员将「==」写成「=」时,编译器将会产生一个错误,从而避免产生一个难以找到的逻辑错误。


流运算符汇总:

serprecision(4) 精确到小数点后4位

fixed       强制输出定点格式

setw(4) 下一个输出占用字符宽度

boolalpha 指定每个布尔值表达式的值应该显示为「true」或者「false」单词的形式。


你可能感兴趣的:(学习笔记)