C語言 3 道面試題,不會還敢說你C學的好?帶詳解

碼字不易,對你有幫助 點贊👍/轉發↪️/關注 👀 支持一下作者

微信搜公衆號:不會編程的程序圓

看更多幹貨,獲取第一時間更新

 

關於整數類型存儲的面試問題

以下三個問題大家可以先獨立思考一下,看看如果真的面試官問你,你能不能正確的回答並清晰的講出其中的原理。

 

問題 1

請問,printf 函數會打印出什麼內容?並解釋原因。

char a = -1;
signed char b = -1; 
unsigned char c = -1; 
printf("a = %d, b = %d, c = %d\n", a, b, c);

a = -1, b = -1, c = 255

 

signed char 與 char 表示同一種類型,原理一樣

 

 

 

問題 2

請問,printf 函數會打印出什麼內容?並解釋原因。

char a = -128; printf("%u\n", a);
4294967168

你想到了嗎?

 

我們還是按照上面的思路分析:

 

 

問題 3

請問,printf 函數會打印出什麼內容?並解釋原因。

char a = 128; printf("%u\n", a);
4294967168

神奇嗎?並不神奇。

原因就在於“截斷”時得到的二進制序列是一模一樣的,後面的操做是相同的。

另外說一句,char 的範圍是 -128 ~ 127,所以上面的 char 型變量 a 溢出了。

 

試着想想下面的 printf 函數又會輸出什麼呢?

unsigned char a = -128; 
unsigned char b = 128; 
printf("a = %u, b = %u\n", a, b);

推薦閱讀:

給你三個必須要學C語言的理由!

 

以上就是本次的內容。

如果文章有錯誤歡迎指正和補充,感謝!

最後,如果你還有什麼問題或者想知道到的,可以 在評論區/私信 告訴我呦,我可以在後面的文章加上你的真知灼見👁。

關注我,看更多幹貨!

我是程序圓,我們下次再見。🍂

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章