关于面试宝典中的各个问题(一)
1、關于浮點數1.0f在內存中的表示:是3f800000.
各個類型所占的字節數(byte),1byte=8bit
char? 1
short 2
bool 1
int 4
long 4
float 4
double 8
long double 8
char * 4
int * 4
float * 4
以上是對于我的電腦,在典型的32位機上面的用VS2008的情況,64位機上會有不同。具體情況會因為電腦和編譯器的原因而不同。參考資料《深入理解計算機系統》P28.
2、整數提升 --來自《面試寶典》P37
int _tmain(int argc, _TCHAR* argv[]) {unsigned char a=0xA5;unsigned char b=~a>>5;printf("b=%d",b);getchar();return 0; }結果是b=250,原因是整數提升,a取反后不是8Bit是16Bit,前面的0也變成了1.
3、a,b交換問題
先發一段求a,b中較大的一個的程序:
int a=5;int b=3;int c=a-b;char *strs[2]={"a large","b large"};c=unsigned(c)>>(sizeof(int)*8-1);printf("%s",strs[c]);getchar();return 0; 這個程序我覺得還比較有意思,另一種較簡單的做法就是int max=((a+b)+abs(a-b))/2;再來說說ab交換的問題:
用異或^比較好,因為不容易出現越界的問題,
a=a^b;
b=a^b;
a=a^b;
就可以了。
4、這個問題是在處女面的時候被問到的問題:
C和C++
C++中調用被C編譯器編譯后的函數為什么要加extern "C"
C++語言支持函數重載,而C不支持,所以extern c這個鏈接交換指定符號解決名字匹配問題。
最后關于extern "C"等等,推薦一個網頁
http://www.cnblogs.com/skynet/archive/2010/07/10/1774964.html
好啦,這部分程序設計的基本概念先告一段落~
轉載于:https://www.cnblogs.com/liuliunumberone/archive/2011/06/07/2074528.html
總結
以上是生活随笔為你收集整理的关于面试宝典中的各个问题(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 301跳转的实现
- 下一篇: 从外部调用Django模块