C++学习(58)

来源:互联网 发布:用什么软件挂号 编辑:程序博客网 时间:2024/05/21 10:42

1.    C++语言中,对函数参数默认值描述正确的是:

D 在设定了参数的默认值后,该参数后面定义的所有参数都必须设定默认值。

 

2.    以下关于头文件说法正确的是(B

A. #include<filename.h>,编译器寻找头文件时,会从当前编译的源文件所在的目录去找

B.  #include“filename.h”,编译器寻找头文件时,会从通过编译选项指定的目录去找

C. 多个源文件同时用到的全局整数变量,它的声明和定义都放在头文件中,是好的编程习惯

D. 在大型项目开发中,把所有自定义的数据类型、全局变量、函数声明都放在一个头文件中,各个源文件都只需要包含这个头文件即可,省去了要写很多#include语句的麻烦,是好的编程习惯。


分析:A中#include包括""和<>这两种情况,""在用户工作目录下寻找(用户的工作目录是通过编译器指定的),<>是找系统标准库函数,通过系统环境变量指定系统库目录;
C,头文件中只能存放全局变量的声明,定义要放在.cpp文件中,如果把定义放在.h文件中会出现error LNK2005:  already defined in xxx.obj
fatal error LNK1169: one or more multiply defined symbols foundError 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 

原创粉丝点击