c语言常见面试题PDF,C语言中的常见面试题

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.

答案:x++效率最高。

2.如何将a、b的值进行交换,并且不实用任何中间变量?

用异或语句比较容易,不用担心超界的问题。

a=a^b;

b=a^b;

a=a^b;

3.头文件中的ifndef/define/endif是干什么用的?

防止该头文件被重复引用。

4.#include和#include"filename.h"有什么区别?

对于#include,编译器从标准库路径开始搜索filename.h;

对于#include"filename.h",编译器从用户的工作路径开始搜索filename.h;

5.what is the output of zhe

following code?(下面代码的输出结果是什么?)

#define SQR(x) (x*x)

main()

{

int a,b=3;

a=SQR(b+2);

printf("\n%d",a);

}

A:25 B:11 C:Would

vary from compiler to

compiler D:Error

完整代码如下,执行后输出结果为11。

#include

#define SQR(x) (x*x)

int main()

{

int a,b=3;

a=SQR(b+2);

printf("\n%d",a);

return 0;

}

定义宏展开式时容易造成二义性的问题。a=SQR(b+2)这一语句展开后的结果是“b+2*b+2”,而不是想象中的“(b+2)*(b+2)”。要想得到这个结果,必须把宏定义语句改为如下形式:#define

SQR(x) ((x)*(x)),这样的输出结果是25。

6.预处理问题、const问题和sizeof问题是C++设计语言中的三大难点,也是各大企业面试中反复出现的问题。

预处理指令#define声明一个常数时应注意:不能以分号结束,括号的使用等等;会写计算表达式得值;为避免溢出问题的发生,定义这个常数为长整型数。如果你在你的表达式中用到了UL(表示无符号长整型),那么你就有了一个好的起点。

如定义一年有多少秒?

#define

SECONDS_PER_YEAR(60*60*24*365)UL 忽略闰年

const的用处?

定义const常量;修饰函数参数和返回值,甚至函数的定义体。受const修饰的东西都受到强制的保护,避免意外更改,提高程序的健壮性。

const与#define都可以定义常量,但是const的用处更广泛,可以完全替代宏常量。

const有数据结构,编译器对前者类型进行安全检查,集成化的调试工具可以对const常量进行调试,C++中只能使用const常量。这些都是宏常量做不到的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值