1、C语言中实数E的表示
C语言中实数常数的科学表示法规定格式为:“实数e整数”或“实数E整数”,其中幂是整数,不能写成实数。e(或E)前后的实数和整数都不能省略掉,因此选项C和D都是错误的。选项B的-080,由于C语言规定。0开头的是八进制数,0x(0x)开头的是十六进制数。而八进制数数字是0~7,出现8是错误的,因此选项B也是错误的。只有选项A是正确的。实数的小数点前后的数字都可以不写。
2、sizeof得到的是内存,size得到的length
3、友元函数里不含有this指针,所以要加对象名访问对象成员
4、友元函数可以访问类里面的私有成员
5、#include命令的功能是,在命令处插入一个文本文件
6、全局变量使用时可赋值可不赋值,不赋值时使用默认值,局部变量声明时可以不赋值,但使用时必须赋值,否则编译器会报错。
7、数组做函数参数时,当做普通指针来用
8.
1. 编辑:也就是编写 C/C++ 程序。
2. 预处理:相当于根据预处理指令组装新的 C/C++ 程序。经过预处理,会产生一个没有宏定义,没有条件编译指令,没有特殊符号的输出文件,这个文件的含义同原本的文件无异,只是内容上有所不同。
3. 编译:将预处理完的文件进行一系列词法分析、语法分析、语义分析及优化后,产生相应的汇编代码文件。
4. 链接:通过链接器将一个个目标文件(或许还会有库文件)链接在一起生成一个完整的可执行程序。 链接程序的主要工作就是将有关的目标文件彼此相连接,也就是将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够被操作系统装入执行的统一整体。在此过程中会发现被调用的函数未被定义。
9、float判断为真的条件
float : const EXPRESSION EXP = 0.000001
if ( a < EXP && a >-EXP
10、
算术转换:把一种算术类型转换成另一种算术类型。运算符的运算对象将转换成最宽的类型,题中最宽的是double类型8字节,所以结果是double。
其他几种转换情况:
1、整型提升:把小整数类型转换成较大的整数类型。其中布尔值false提升为0、true提升为1;
2、无符号类型的运算对象:
如果一个运算对象是无符号类型、另一个是带符号类型,而且其中无符号类型不小于带符号类型,那么带符号的运算对象转换成无符号的;
如果一个运算对象是无符号类型、另一个是带符号类型,而且其中无符号类型小于带符号类型,此时转换结果依赖于机器。
11、
预处理生成.i
编译生成.s
汇编生成.o
链接生成可执行文件
12、指针加减法 https://blog.csdn.net/nifeigea/article/details/79900514
13、
类的实例化是在内存中分配一块地址,每个实例在内存中都有独一无二的二地址。同样,空类也会实例化,所以编译器会给空类隐含的添加一个字节,这样空类实例化后就有独一无二的地址了。所以,空类的 sizeof 为 1,而不是 0. 多重继承的空类的大小也是
14、 数据类型的sizeof
32 位 64 位
char 1 1
int 4 大多数 4,少数 8
long 4 8
float 4 4
double 8 8
指针 4 8
15、static int:字面意思理解,静态整形变量。因为是静态,初始化后就不会再初始化第二次了。
16、
有关 const 成员(常量成员)、static 成员(静态成员变量)、const static 成员(静态常量成员)的初始化:
1、const 成员:只能在构造函数后的初始化列表中初始化
2、static 成员:初始化在类外,且不加 static 修饰
3、const static 成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像 static 在类外初始化
17、include "" 是先从本地目录开始寻找,然后去寻找系统路径,而 Include <> 相反先从系统目录,后从本地目录,所以<>的编译速度比”“快
18、不能被重载的运算符 1、. (成员访问运算符) 2、.* (成员指针访问运算符) 3、:: (域运算符) 4、sizeof (长度运算符) 5、?: (条件运算符)
19、C 语言中以数字 1-9 开头表示十进制,以 0 开头表示八进制,以 0X 开头表示十六进制。
20、完全二叉树叶子节点数与其他节点数相等, 或者多一个。
21、前置单目运算符重载为类的成员函数时,不需要显式说明参数,即函数没有形参。后置单目运算符重载为类的成员函数时,函数要带有一个整型形参。例如:
++a 前缀运算符 a.operator () 不需要加参数。
a++ 后缀运算符 a.operator (int) 需要加参数
22、|| 和 && 骤死式:一旦表达式值确定,后面的变不再执行。这也是为什么不要重载 || 和 && 的原因
23、构造函数初始化时必须采用初始化列表一共有三种情况,
1. 需要初始化的数据成员是对象 (继承时调用基类构造函数)
2. 需要初始化 const 修饰的类成员
3. 需要初始化引用成员数据
24、
单精度浮点数的有效位数是 7 位。
双精度浮点数的有效位数是 16 位
25、
宏替换不占用运行时间,只占编译时间
26、抽象类不能初始化,不能当做返回值,不能当做参数,可以作为指针变量
27、
序列容器:动态数组vector,双端队列deque(本质是动态数组加索引),链表list。
关联容器:set,map,multiset,multimap,bitset(叫 bit_array 更合适)。
容器适配器:stack,queue,priority_queue
28、多态主要以两种形式,静态多态和动态多态,静态多态主要实现了函数重载和运算符重载。动态多态主要实现了虚函数。虚函数是动态联编,程序在运行的过程中确定调用哪一个函数。
29、
C 语言函数参数入栈顺序为由右向左
30、
构造函数和析构函数是无法实现多态性的。理由是:
1. 构造函数中,先构造父类,再构造子类,父类构造函数中调用函数,此时子类还没有构造,怎么实现多态性?
2. 析构函数中,先析构子类,再析构父类。当我们在一个类中执行析构函数时,它的派生类都已经析构了,自然无法实现多态性。
31、else就近配对原则
32、对于任意整型数 n 的按位取反公式为:~n=-(n+1)