程序员面试宝典笔记

程序员面试宝典笔记

ID:12128895

大小:5.42 MB

页数:15页

时间:2018-07-15

程序员面试宝典笔记_第1页
程序员面试宝典笔记_第2页
程序员面试宝典笔记_第3页
程序员面试宝典笔记_第4页
程序员面试宝典笔记_第5页
资源描述:

《程序员面试宝典笔记》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、1)答案为:ANOTE1:求值顺序是自右至左;输出顺序还是从左至右.NOTE2:如果把printf(“%d%d”,*ptr,*(++ptr));换成printf(“%d%d”,*ptr,*(ptr++));结果为C,虽然求值是从右向左的,但是表达式中的*ptr与*(ptr++)不是两个语句,所以ptr的值相同2)(int&)a与(int)&a及(int)a有什么区别#includeusingnamespacestd;voidmain(){floata=1.0f;cout<

2、(int&)a)<0floatb=0.0f;cout<1}NOTE1:(int&)a把a强制转换成整形引用类型è不经过转换,直接得到a在内存单元的值(int)a把a强制转化为整型è经过转换了(int)&a把a的地址强制转换成整型NOTE2:float类型在内存中存储的形式是,符号位指数尾数由754标准:阶码采用增码(该数补码的反符号),尾数采用原码所以1.0f在内存中的形式为001111111000000000000000

3、00000000符号位指数尾数00000001//源码11111110+1=11111111//补码=>取反加101111111//增码=>符号取反所以输出的是0x3f8000000在内存中的的存储形式000000000000000000000000000000003)单目>算数>移位(<<>>)>关系(>>=<<===!=)>逻辑(&^

4、&&

5、

6、)NOTE1:运算符的优先级,所以是先对a求反,然后再右移5位NOTE2:类型转换,a会先被提升到int型进行运算,最后取低8位答案:C1)通过位运算求X与Y的平均值解析:(x&y)+((x^y)

7、>>1)是用来求x和y的平均数的,即(x+y)/2.(x&y)+((x^y)>>1),把x和y里对应的每一位(指二进制位)都分成三类,每一类分别计算平均值,最后汇总。其中,一类是x,y对应位都是1,用x&y计算其平均值;一类是x,y中对应位有且只有一位是1,用(x^y)>>1计算其平均值;还有一另是x,y中对应位均为0,无须计算。下面分别说明一下前两种情况是怎样计算的:x,y对应位均为1,相加后再除以2还是原来的数,如两个00001111相加后除以2仍得00001111,这是第一部分。第二部分,对应位有且只有一位为1,用“异或”运算提取出来

8、,然后>>1(右移一位,相当于除以2),即到到第二部分的平均值。第三部分,对应位均为零,因为相加后再除以二还是0,所以不用计算。三部分汇总之后就是(x&y)+((x^y)>>1)顺便解释一下前面说到可以避免溢出。假设x,y均为unsignedchar型数据(0~255,占用一字节),显然,x,y的平均数也在0~255之间,但如果直接x+y可能会使结果大于255,这就产生溢出,虽然最终结果在255之内,但过程中需要额外处理溢出的那一位,在汇编中就需要考虑这种高位溢出的情况,如果(x&y)+((x^y)>>1)计算则不会。2)通过位运算交换a与

9、b的值a=a^b;b=a^b;a=a^b;//无需担心越界问题3)C语言不支持函数重载1)宏中的参数要注意加括号答案:#defineMIN(A,B)((A)<=(B)?(A):(B))2)const相关说明A.const与#define:作用域,有类型,方便调试(C中只能用#define表示常量)B.C与C++中的consta)C中const的意思是”一个不能被改变的普通变量”,所以下面的语句是错误的constbuffersize=100;charbuf[buffersize];//错误,buffersize不是常量b)C中const默认是

10、外部链接的,所以可以有如下的语句constbuffersize;//C认为它是一个声明,定义及初始化在其他地方了而在C++中如果要做同样的事情需要如下的语句externconstbuffersize;//C++默认const是内部链接的C.C++中的constvoidf()const如果想修改类中的非const变量,需要在该变量前加mutable(如mutableinti)voidf()与上面的函数重载3)Sizeof问题之数据对齐A.charq2[]=”a”;sizeof(q2);//应该为3B.struct{shorta1;shor

11、ta2;shorta3;}A;sizeof(A);//6short为2C.struct{longa1;shorta2;}B;sizeof(B);//8long为4D.classD

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。