[問題] 關於八進制的一個奇怪的問題.
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
MinGW - GCC (32 bits)
問題(Question):
面試出題時,查大陸題庫書籍,發現解答不正確,
程式碼是用%o輸出,
但大陸書籍的解答應該是用%d作輸出,
就算用%d輸出,答案也不正確.
實際操作後,有兩個問題:
1.不知道編譯器是怎麼計算這些八進制的程式語法?
想請問輸入後的八進制算法是? (C language)
2.已經知道此語法產生了溢位,但不知數字是怎麼產生出來的? 語法分析和原理為何?
餵入的資料(Input):
'\1'
'\11'
'\111'
'\1111'
'\11111'
'\111111'
'\1111111'
'\11111111'
'\111111111'
...
預期的正確結果(Expected Output):
%d 的輸出結果:
1
9
73
18737
4796721
1227960625
825307441
825307441
825307441
%o 的輸出結果:
1
11
111
44461
22230461
11114230461
6114230461
6114230461
6114230461
...
錯誤結果(Wrong Output):
大陸書籍的解答:
1
9
73
585
4681
37449
299593
2396745
19173961
...
程式碼(Code):(請善用置底文網頁, 記得排版)
printf ("%o\n",'\1');
printf ("%o\n",'\11');
printf ("%o\n",'\111');
printf ("%o\n",'\1111');
printf ("%o\n",'\11111');
printf ("%o\n",'\111111');
printf ("%o\n",'\1111111');
printf ("%o\n",'\11111111');
printf ("%o\n",'\111111111');
補充說明(Supplement):
--
※ 發信站: 批踢踢實業坊(ptt.cc)
→
01/10 18:18, , 1F
01/10 18:18, 1F
→
01/10 18:19, , 2F
01/10 18:19, 2F
→
01/10 18:19, , 3F
01/10 18:19, 3F
→
01/10 18:22, , 4F
01/10 18:22, 4F
→
01/10 18:35, , 5F
01/10 18:35, 5F
→
01/10 18:36, , 6F
01/10 18:36, 6F
→
01/10 18:39, , 7F
01/10 18:39, 7F
→
01/10 18:52, , 8F
01/10 18:52, 8F
→
01/10 18:53, , 9F
01/10 18:53, 9F
→
01/10 18:54, , 10F
01/10 18:54, 10F
→
01/10 18:54, , 11F
01/10 18:54, 11F
→
01/10 18:54, , 12F
01/10 18:54, 12F
→
01/10 18:59, , 13F
01/10 18:59, 13F
※ 編輯: ruthertw 來自: 36.224.221.178 (01/10 19:39)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
0
13
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章