- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C程序员面试题01pdf
1.x=x+1,x+=1,x++,哪个效率最高,为什么?
解析:
x=x+1;最低,因为它的执行过程如下:
(1)读取右x 的地址。
(2)x+1 。
(3)读取左x 的地址。
(4)将右值传给左边的x(编译器并不认为左右x 的地址相同) 。
x+=1;其次,其执行过程如下:
(1)读取右x 的地址。
(2)x+1 。
(3)将得到的值传给x( 因为x 的地址已经读出) 。
x++;效率最高,其执行过程如下:
(1)读取右x 的地址。
(2)x 自增1。
2.下面程序的结果是什么?
char foo(void)
{
unsigned int a = 6;
int b = -20;
char c;
(a+b6) ? (c=1) : (c=0);
return c;
}
解析:
unsigned int 类型的数据与int 类型的数据相运算后,自动转为unsigned int 类型。因此
a-b 的值不是-14,而是一个unsigned int 类型的数4294967382. 因此返回值是1。原因是当表达
式中存在有符号类型和无符号类型时,所有的操作数都自动转换为无符号类型。
3.如何将a、b 的值进行交换,并且不使用任何中间变量?
解析:
如果采用:
a = a + b;
b = a - b;
a = a - b;
这样做的缺点就是如果a、b 都是比较大的两个数,a=a+b 时就会越界。
而采用:
a = a ^ b;
b = a ^ b;
a = a ^ b;
用异或语句无需担心越界问题。
4.在C++程序中调用被C 编译器编译后的函数,为什么要加extern C?
答案:
C++语言支持函数重载,C 语言不支持函数重载。函数被C++编译后在库中的名字与C
语言的不同。C++提供了C 连接交换指定符号extern C解决名字匹配问题。
5.头文件中的ifndef/define/endif 是干什么用的?
答案:防止该头文件被重复引用。
6.#include filename.h和#include filename.h有什么区别?
答案:
对于#include filename.h ,编译器从标准库路径开始有哪些信誉好的足球投注网站filename.h;
对于#include filename.h ,编译器从用户的工作路径开始有哪些信誉好的足球投注网站filename.h 。
7.用预处理指令#define 声明一个常数,用以表明1 年中有多少秒
(忽略闰年问题)。
解析:
通过这道题面试官想考几件事情:
1)#define 语法的基本知识(例如,不能以分号结束,括号的使用,等等) 。
2)意识到这个表达式将使一个 16 位机的整型数溢出,因此要用到长整型符号 L ,告诉
编译器这个常数是长整型数。
答案:#define SECONDS_PER_YEAR (60*60*24*365)UL
8.写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。
答案:#define MIN(A,B) ((A)=(B)?(A):(B))
9.const 有什么用途?
答案:(1)可以定义const 常量。
(2)const 可以修饰函数的参数和返回值,甚至函数的定义体。被 const 修饰的东西都
受到强制保护,可以预防意外的变动,能提高程序的健壮性。
10.const 与#define 相比有什么不同?
答案:C 语言可以用const 定义常量,也可以用#define 定义常量,但是前者比后者有更多的
优点:
(1)const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检
查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换中可能会发生意料不到
的错误。
(2)有些集成的调试工具可以对const 常量进行调试,但是不能对宏常量进行调试。
11.说明sizeof 和strlen 之间的区别。
解析:
第一个例子:
char *ss = 0123456789;
sizeof(ss)结果为4 ,ss 是指向字符串常量的字符指针。
sizeof(*ss)结果为1,*ss 是第一个字符。
文档评论(0)