《程式設計師面試寶典》第二版的 錯誤修正

2021-06-04 16:38:21 字數 709 閱讀 8695

第一處 p38

下面程式的輸出結果是多少

void main()  

解答: 輸出的結果是000000f7, fffffff7。變數i的輸出是沒有疑問的,unsigned int到unsigned char直接截斷,取低位元組。

對於變數b,在第5行中,書中解釋是這一行等價於

unsigned int* p = &a; // p中的內容是的位址,即p指向a

char* b = (char*)p; // 此處的強制轉換只是使b也指向a而已

// 這裡是char型別的指標轉換,而不是char型別的轉換,影響的只是指標的

看似好像正確,其實不然,不能因為結果對了 就去這麼解釋。

可以試驗一下 把第一行 unsigned int a = 0xfffffff7; 改為unsigned int a = 0x1ffffff7; 輸出等等*b還是fffffff7。

到底什麼原因?可見指標轉換的時候並不是這麼轉換的。

(char*)&a 將a的位址轉換成乙個char型指標,和(int*)&a 轉換成乙個int是不同的,它只會指向&a的低8位記憶體,其餘的發生了截斷。

所以 現在b指向的是0xf7, 這是乙個負數,使用%08x 輸出 就是ffffffff7.

程式設計師面試寶典二

1 下面程式結果 unsigned int a 0xfffffff7 unsigned char i unsigned char a 發生截斷 char b char a 指標轉換 printf 08x,08x n i,b 000000f7,fffffff7int f int x,int y 2 c...

如何招到優秀的程式設計師(第二版)

根據大家的反饋,我發現在第一版中對優秀程式設計師的定位有一些偏差,因此作出改進,希望大家繼續拍磚!並慎重宣告 此處是討論如何招到優秀的程式設計師,如果你認為自己是優秀的,請說出你自認為優秀的地方,這會給hr的工作帶來幫助。大多數程式設計師抱怨公司不識泰山,這不正好是可以改善雙方選擇的方式方法嗎?筆試...

程式設計師教程 第二版 學習筆記 一

今年下半年的軟考報名時間截止到9月10號。現在我還不清楚要不要報名,因為怕公司的專案進度緊而影響了複習進度。不管是否參加軟考,作為一名剛畢業的程式設計師,我也應該掌握軟考考試大綱的知識點。我看的教材是程式設計師教程第二版。第一章是計算機系統基礎知識 我不是計算機專業的,再加上在學校學習的不多,書上的...