面试题: 如何将a。b的值进行交换,并且不使用任何中间变量?
用异或的方法比较好,不会发生溢出,如果采用
a= a+b;
b= a-b;
a= a-b;
这样做的缺点是如果a,b很大 可能溢出,而采用:
a= a^b;
b= a^b;
a=a^b;
面试题2:
在c++程序中调用被c编译器编译的的函数,为什么要加extern“c”?
因为c++支持函数重载,c语言不支持函数重载,函数被c++编译后在库中的名字与c语言的不同,假设某个函数的原型是:void foo(int x,int y)。该函数被c编译器编译后在库中的名字为_foo,而c++的为_foo_int_int之类的名字。
c++提供了c连接交换指定符号extern“c” 解决名字匹配的问题。
评论