1.
解析:==的優先級小於<=。
2.
解析:如果是小寫的u則輸出32769,大寫的字母不能當作格式控制符。
3.
!!!!!沒懂!!!!!!
4.
函數模板和類模板都是由編譯器實例化。
類模板的成員函數都是函數模板,類模板實例化後,成員函數也隨之實例化。
一個類定義中,只要有一個函數模板,這個類就是類模板。
5.
解析:最後一個選項#define N 2008 後面不加分號就是對的。
6.
純虛函數的格式:virtual <類型> <函數名> (<參數表>) = 0;
例:virtual void print()=0;
聲明純虛函數的類是抽象類,不能實例化!基類被虛繼承纔是虛基類。
7.
首先對0長數組做一個解釋:
用途 :長度爲0的數組的主要用途是爲了滿足需要變長度的結構體。
用法 :在一個結構體的最後 ,申明一個長度爲0的數組,就可以使得這個結構體是可變長的。對於編譯器來說,此時長度爲0的數組並不佔用空間,因爲數組名本身不佔空間,它只是一個偏移量, 數組名這個符號本身代 表了一個不可修改的地址常量 (注意:數組名永遠都不會是指針! ),但對於這個數組的大小,我們可以進行動態分配.
8.
數組名是數組這種類型的變量名,所以對數組名取地址是取的整個數組的地址,所以&a+1自然要跨過整個數組的長度,本題即跨過2*5 = 10個int的長度。
有了上述概念,再來分析這道題,int *ptr = (int *)(&a+1),p此時指向的地址應該是a[1][4]後面的地址,由於ptr是int型指針,ptr-3應該是ptr向前移動3個元素,即ptr-3指向a[1][2],所以*(ptr -3) = 9。