1. 在C++语言中,对函数参数默认值描述正确的是:
D 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值。
2. 以下关于头文件说法正确的是(B)
A. #include<filename.h>,编译器寻找头文件时,会从当前编译的源文件所在的目录去找
B. #include“filename.h”,编译器寻找头文件时,会从通过编译选项指定的目录去找
C. 多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯
D. 在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。
分析:A中#include包括""和<>这两种情况,""在用户工作目录下寻找(用户的工作目录是通过编译器指定的),<>是找系统标准库函数,通过系统环境变量指定系统库目录;
error LNK2005: already defined in xxx.obj
fatal error LNK1169: one or more multiply defined symbols found
Error executing link.exe.这样的链接错误;
D,这个作为一个程序员应该具备的常识,要把这些东西放在不同的.h文件中。
3.下面两段代码中for循环分别执行了多少次?32767 16383
unsigned short i,j;
for(i=0,j=2;i!=j;i+=5,j+=7) {
}
unsigned short i,j;
for(i=3,j=7;i!=j;i+=3,j+=7) {
}
答案分析:unsigned short能表示2^16个数,其范围为0~2^16-1,j在i前2个位置,i以5的速度增长,j以7的速度增长,当增长到unsigned short表示的最大值又会返回0(以一个圈的形式循环)开始重新走直到i、j相遇,所以就是7t + 2 - 5t = 2^16,所以为32767次
第二个类似 (7t + 7)-(3t + 3) = 2^16,所以为16383次.
4.vector初始化方式有四种:
1). vector<int> v(10); 表示创建size为10的vector,每个元素执行默认初始化;
2) vector<int> v(10,1);表示创建size为10的vector,每个元素初始化为1;
3). vector<int> v{1,2,3,4};表示创建size为4的vector,元素的值分别为1,2,3,4。
4). vector<int> v; 表示创建size为0的vector;
5.如下函数,则funb(10)为512
分析:
0+1+1+0+...+0+1+1+0 ..=512
1<<10 = 1024;//左移10位,1 0000000000 右边补10个0; 所以进行1024 次循环
然后就是^ 异或运算(按位相同为0,相异为1)
举个例子: v = 1时, int 32位
v=00000000 00000000 00000000 00000001
v>>16
v= 00000000 00000000 00000000 00000000
所以v^=v>>16 之后 v =1;
之后相同的道理 v &=0xf
0xf (16进制)= 00000000 00000000 00000000 00001111
按位与; 此时v=1;
0x6996 = 0110 1001 1001 0110
右移v位 再取最后一位 得到 1;
0+1+1+0+1+0+0+1+...所以是一半1和一半0 = 512