1.
結構體求位元組大小問題
struct
s1;struct
s2;cout<<對於s1,因為最大是int,所以前面得char+short+1=4,在int=4,所以s1大小為8。s2char得補成int,short也一樣,所以是3*4=12;
結構體預設的位元組對齊一般滿足三個準則:
1) 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除;
2) 結構體每個成員相對於結構體首位址的偏移量(offset,即每個成員的起始位址)都是成員自身大小的整數倍,如有需要編譯器會在成員之間加上填充位元組(internal adding);
3) 結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末乙個成員之後加上填充位元組(trailing padding)。
注意:當結構體成員裡面有數組成員時,如int a[10],要看成10個整形變數才參與計算。
2. signed char a =0x80;
unsigned int b = a;
unsigned char c = a;
cout<<"a:"<<(int)a《補最高位的
1(若最高位是0則補0),a的值為取反+1,為-32)
cout<<"b:"string f()
string g(string&str)
int i = 0;
constint &i=0;//
可以編譯
//int &i=0;// 不能用非物件去初始化乙個引用。
char a[10];
if(!!i)//可以編譯通過
g(f());//可以編譯通過
//a=a+1;//因為a
是乙個位址常量,不能被重新賦值
//g("abc");//
因為「abc」
是乙個const char*
型別,而
g函式引數還是非
const的
4.unsigned
int a =0x1234;
char b = *((char*)&a);
cout<<(int)b;//輸出52,若不新增(int)則輸出4,ascaii碼值。
C 一些問題
1 if else語句和switch case語句的效率分析對比 switch效率高。switch的效率與分支數無關,當只有分支比較少的時候,if效率比switch高,因為switch有跳轉表。分支比較多,那當然是switch 根據大量的實際程式測試 不考慮不同的編譯器優化程度差異,假設都是最好的優...
網上摘抄一些C 筆試題目
c 筆試題 1.多型類中的虛函式表是compile time,還是run time時建立的?答案 虛函式表是在編譯期就建立了,各個虛函式這時被組織成了乙個虛函式的入口位址的陣列.而物件的隱藏成員 虛函式表指標是在執行期 也就是建構函式被呼叫時進行初始化的,這是實現多型的關鍵.3.完成字串拷貝可以使用...
c 一些問題總結
這裡總結一些c 常遇到的問題 不同型別之間的轉換。1 string const char std string s 1 lsw const char cs 1 s 1.c str printf const char cs is s n cs 1 2 const char string const c...