sizeof计算栈中分配的大小
摘要:#include<iostream>using namespace std;class A1{public:int a;static int b;A1();~A1();};class A2{public :int a;char c;A2();~A2();};class A3{public:float a;char c;A3();~A3();};class A4{public:float a;int b;char c;A4();~A4();};class A5{public:double d;float a;int b;char c;A5();~A5();};int main(){c
阅读全文
posted @
2012-11-03 15:02
吉大依恋
阅读(743)
推荐(0)
预处理指令#define
摘要:用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)通过这道题面试官想考以下几个知识点:1.#define语法的基本知识(例如,不能以分号结束,括号的使用,等等)2.要懂得预处理器将为你计算常数表达式的值,因此,写出你如何计算多少秒比直接计算出实际的值更有意义。3.意思到这个表达式的值将使一个16位机的整型数溢出,因此要使用长整型符号L,告诉编译器这个常数是长整型。答案:#define seconds_per_year (365*24*60*60)UL写一个“标准”宏MIN,这个宏输入两个参数并返回较小的一个。答案:#define MIN(A,B) ((A)<
阅读全文
posted @
2012-11-03 12:59
吉大依恋
阅读(1459)
推荐(0)
C和C++的关系
摘要:1.在C++程序中调用被C编译器编译后的函数,为什么还要加extern "C"?C++语言支持函数重载,C语言不支持函数重载。函数被C++编译后在库中的名字与C语言的不同。假设某个函数的原型为void foo(int x,int y).该函数被C编译器编译后在库中的名字为_foo,而C++编译器则会产生想_foo_int_int之类的名字。C++提供了C连接交换指定符号extern "C"解决名字匹配问题。2.头文件中的ifndef/define/endif是干什么用的?防止该头文件被重复引用。
阅读全文
posted @
2012-11-02 16:48
吉大依恋
阅读(226)
推荐(0)
a、b交换
摘要:面试例题1:有两个变量a和b,不用"if"、"?:"、"switch"或其他判断语句,找出两个数中间比较大的。答案:int max=(a+b+abs(a-b))/2解析:若a>b,则(a+b+abs(a-b))/2为(a+b+a-b)/2=a. 若a<b,则(a+b+abs(a-b))/2为(a+b+b-a)/2=b.面试例题2:如何将a、b的值进行交换,并且不是有任何中间变量?方案一:a=a+b;b=a-b;a=a-b;但是这样做的缺点是如果a、b都是比较大的二个数,a=a+b时就会超界。方案二:a=a^b;b=a^b;
阅读全文
posted @
2012-11-02 16:32
吉大依恋
阅读(309)
推荐(0)
判断一个数X是否是2^N次方
摘要:用一个表达式,判断一个数X是否是2^N次方,不可用循环语句。解析:如果一个数是2^N,那么该数的二进制表示中只有一个1,其他位均为0.由于X和X-1做与运算,即X&(X-1)能消掉X中的一个1,若结果为0,则表示X中有且仅有一个1,那么X是2^N。故表达式为:!(X&(X-1))下面代码:int f(int x,int y){ return (x&y)+((x^y)>>1)}(729+271)=解析:这道题如果使用本办法来求解,就都转化成二进制然后按位与。但是这样的做法显然不是面试官所期待的。仔细观察一下题目,x&y是取相同的位与,这个的结果是x和y
阅读全文
posted @
2012-11-02 16:11
吉大依恋
阅读(674)
推荐(0)
类型转换、运算符问题
摘要:#includeusing namespace std;int main(){ unsigned char a=0xA5; unsigned char b=~a>>4+1; printf("b=%d\n",b); system("pause"); return 0;} ...
阅读全文
posted @
2012-11-02 15:38
吉大依恋
阅读(378)
推荐(0)
数据类型的sizeof
摘要:校园招聘笔试题:int main(){ int a; char c; a=100; c='b'; printf("%d,%d,%d,%d,%d,%d\n",a,c,sizeof(a),sizeof(c),sizeof(&a),sizeof(&c)); return 0;} 运行结果...
阅读全文
posted @
2012-10-29 23:14
吉大依恋
阅读(138)
推荐(0)
float精度问题
摘要:校园招聘笔试题:int main(){ float f= 70.3f; printf("%f\n",f); getchar(); return 0;} 输出是:70.300003而不是70.300000为什么?
阅读全文
posted @
2012-10-29 23:00
吉大依恋
阅读(160)
推荐(0)