騰訊2013實習生招聘筆試題目(2)

232 位機上根據下面的代碼,問哪些說法是正確的? 
signed char a = 0xe0; 
unsigned int b = a; 
unsigned char c = a;  
A. a>0 && c>0 爲真 B. a == c 爲真 C. b 的十六進制表示是:0xffffffe0 D. 上面都不對
A:
分析 a>0, 首先進類型提高,將signed char 提高爲signed int,值爲0xffffffe0,是負數,因此a>0錯誤。分析c>0,首先進類型提高,將unsigned char 提高爲signed int,值爲0x000000e0,是正數,因此c>0正確

B:
通過A的分析,可知B錯誤

C:
首先對a進行類型提高,將signed char 提高爲signed int,值爲0xffffffe0,而後將其賦值給unsigned int b,因此C正確

 

3int a[10]; 問下面哪些不能夠表示 a[1] 的地址? 
A. a+sizeof(int) B. &a[0]+1 C. (int*)&a+1 D. (int*)((char*)&a+sizeof(int))
A:
數組名a至關於一個整型指針,只是至關於而已,二者之間不能劃等號。這裏把a看作一個整型指針int *p,它指向數組的第一個元素,a+4則指向了a[4]

B:能夠表示a[1]

C:
(int*)&a +1;  &a是指向數組的指針,即 int (*p)[10],那麼&a+1,表示的a是a[9]以後的地址;(int *)&a則又變成了指向一個整型的指針,即指向了a[0]

D:參考C的分析
相關文章
相關標籤/搜索