碼字不易,對你有幫助 點贊👍/轉發↪️/關注 👀 支持一下作者
微信搜公衆號:不會編程的程序圓
看更多幹貨,獲取第一時間更新
關於整數類型存儲的面試問題
以下三個問題大家可以先獨立思考一下,看看如果真的面試官問你,你能不能正確的回答並清晰的講出其中的原理。
問題 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);
推薦閱讀:
以上就是本次的內容。
如果文章有錯誤歡迎指正和補充,感謝!
最後,如果你還有什麼問題或者想知道到的,可以 在評論區/私信 告訴我呦,我可以在後面的文章加上你的真知灼見👁。
關注我,看更多幹貨!
我是程序圓,我們下次再見。🍂