程序员面试精要-C/C++程序设计-程序设计基本概念(面试宝典读书笔记)

来源:互联网 发布:mac磁盘工具 编辑:程序博客网 时间:2024/05/16 02:00

a,b交换

1. 有两个变量a,b,不用”if”,”?:””switch”或其他判断语句,找出两个数中间比较大的。

int max=((a+b)+abs(a-b))/2;


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

a=a^b;

b=a^b;

a=a^b;

(按位异或运算,可以防止a,b较大时的超界问题)

 

C和C++关系

3. 在C++程序中调用被C编译器编译后的函数,为什么要加extern ”C”?

C++语言支持函数重载,C语言不支持函数重载。函数被C+编译后在库中的名字与C语言不同。假设某个函数的原型为:void foo(int x,int y)。该函数被C编译器编译后在库中的名字为_foo(),而C++编译器则会产生像_foo_int_int(也就是说加上了参数类型)之类的名字.

C++提供了C连接交换指定符号extern “C”解决名字匹配问题


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

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


5.包含头文件时,尖括号和双引号有什么区别?

对于尖括号,编译器从标准库路径开始搜索头文件;对于双引号,编译器从用户的工作路径开始搜索头文件。


6.如何判断一段程序是由C编译程序还是由C++编译程序编译的?

C++编译时定义了_cplusplus

C编译时定义了_STDC_

 

程序设计其他问题

7.main主函数执行完毕后,是否可能会再执行一段代码?

可以使用atexit()函数注册一个函数

0 0