本系列博客主要记录巩固基础过程中遇到的知识点。
第二章:
1.include:这是一条预处理编译指令。预处理器将文件内容随源代码文件的内容一起发送给编译器,iostream文件内容将取代这行代码并和源代码组合成一个复合文件。
2.命名空间:命名空间可以让厂商将产品代码封装在其中。比如不同的命名空间下有同名称函数。比如A::function()和B::function()。
3.endl与\n:endl:确保程序继续运行前刷新输出(立即显示),使用"\n"不保证这样的结果。
4.c++不允许函数定义嵌套在另一个函数定义中,每一个函数定义都是独立的。所有函数的创建都是平等的。
5.main()的返回值是返回给操作系统的。返回值是0代表程序运行成功,非0意味着存在问题。
6.smin(int n) n是一个新的变量,函数调用时传递的值被赋给n。
第三章:
1.64位系统每个类型的大小:int:32位= =4bytes short:16位= =2bytes long:32位= =4bytes longlong:32位= =4bytes float通常32位,double通常64位。
2.climits定义了符号常量来表示类型的限制,如:INT_MAX,INT_MIN
3.有符号的整形变量如果超越了限制,值将为另一端的取值。无符号类型超越了限制,将从0开始重置。
4.c++表示数字常量的基数:第一位为1-9:十进制; 第一位为0,后几位0-7则为8进制;前两位为0x或0X则为十六进制。
cout<<hex:修改显示整数的方式为16进制。
cout<<oct:修改显示整数方式为8进制。
5.十六进制数一般表示为unsigned int ,因为十六进制经常被用来表示内存地址,而内存地址是没有符号的。
6.char本质上是另一种整型,很多系统支持的字符不超过128个,所以一个字节就可以表示所有符号。
7.count.put()显示一个字符
8.c++ Release2.0之前,count将字符变量显示为字符,而字符常量显示为数字。早期版本字符常量被存储为int类型。
所以cout.put()是为了显示一个字符常量的。
9.转义序列:可以基于首字符的八进制和十六进制来用转义序列表示字符。如果ASCII为26可以用转义序列表示字符:’\032’或’\x1a’。
10.char默认情况下既不是没符号也不是有符号,是否有符号有c++实现决定,可以显式定义: unsigned char bar; signed char snark;
11.wcha_t 类型表示扩展字符集,占用两个字节。wchar_t类型用wcin和wcout方法输入输出。
用u表示char16_t字符常量和字符串常量如 u’C’和u"be good",char16_t类型和\u00F6形式通用字符名匹配;用U表示char32_t字符常量和字符串常量如U’C’和U"be good",char32_t和\U0000222B形式通用字符名匹配
12.bool:字面值false或true可以被转换为int类型,任何数字值和指针值都可以被隐式转换为bool值。
13.const:格式:const type name=value; 如果声明常量时没有赋值那么常量的值是不确定的而且无法修改。
const对比#define的优点:类型确定,将符号常量限制在规定的作用域里,可以将const用于更复杂的类型。
14.浮点数:计算机将浮点数分成两个部分存储:一部分表示值,另一部分表示对值放大缩小的缩放因子。
E表示法:2.52e+8,2.52E8,5.33E-4,5.33e-4都对
即大小写都可,+可以省略
15.浮点常量的存储:默认为double,需要存储为float再后面加f或F,存储为long double 在后面加l或L。
16.c++中乘除法是从左到右结合的。
17.11种整型:char,有无符号char,有无符号short,有无符号int,有无符号long,有无符号longlong;
3种浮点数:float,double,longdouble
18.类型转换:
(1)三种情况可能出现问题:较大精度的浮点类型转换为精度较小的浮点类型:会使精度降低,也可能值超过范围,结果会去确定;浮点类型转换为整形:丢失小数部分,原来的值可能超出目标类型取值范围,结果将不能确定;较大的整型转换为较小的整型:原来的值可能超过范围,通常只赋值右边的字节。
(2)列表初始化:用{}初始化,{}里只接受常量和const类型。列表初始化不允许缩窄。例如: char c1{31325}:这是不被允许的,因为char只有8位。
(3)表达式种转换:
整型提升:计算表达式时,c++将有无符号short,char,bool,有无符号char转换为int,最后将结果转为相应类型。
不同类型进行算术运算时也会进行一些转换:较小类型会转换为较大类型。
(4)强制类型转换:
(typename)valuename
typename(valuename)
强制类型转换运算符:static_cast(valuename)
19. auto:根据初始值判断类型,建议对更复杂的类型使用,比如stl中的数据结构。