C++学习经典记录


C++设计的主要焦点就是所定义的类类型的行为可以象内置类型一样自然。

buffer 一段用来存放数据的存储区域。IO设备通常存储输入或输出到缓冲区,并独立于程序动作对缓冲区进行读写。输出缓冲区通常必须显示刷新以强制输出缓冲区内容。默认情况下,读cin会刷新cout;当程序结束时,cout也会被刷新。

cerr 绑定到标准错误的ostream对象,这通常是与标准输出相同的流。默认情况下,输出cerr不缓冲,通常用于不是程序正常逻辑部分的错误信息或其他输出。

clog 绑定到标准错误的ostream对象。默认情况下,写到clog时是带缓冲的。通常用于将程序执行信息写到日志文件中。

c++中,把负值赋给unsigned对象是完全合法的,其结果是该负数对该类型的取值个数求模后的值。

对于实际的程序来说,float类型的精度是不够的--float类型只能保证6位有效数字,而double类型至少可以保证10位有效数字,能满足大多数计算的需要。

整型int,short,long默认为带符号型,使用标准库定义的类型总是正确的,其他情况下,使用unsigned类型比较明智,可以避免值越界导致结果为负的可能性。

事实上,在某些实现中char类型被当作signed类型,在另外一些实现中被当作unsigned类型,因此把char类型作为计算类型时容易出问题。

用long类型进行计算所付出运行时的代价远高于用int类型进行同样计算的代价,所以选择类型前要先了解程序的细节并且比较long类型的实际运行时的性能代价。

float,double--使用double基本不会有错,long double 提供的精度类型基本没有必要,需要承担额外运行的代价。

连接宽字面值和字符串字面值是未定义的。宽字面值(中文。。。)(L"literal")

程序不应该依赖于未定义行为。未定义行为的运行结果与编译器相关.

1024f is wrong expression_r_r,整数后面不能加f变成float.

3.14ul is wrong expression_r_r,副点后不能有u.

相关内容