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()函数注册一个函数