Re: [問題] 我自學C++ 接下來我該怎麼走
※ 引述《ale34354 (雞屎)》之銘言:
: 1.
: 答案顯示不出來因為超出範圍long int的範圍是-2147483648-2147483647
: 這個乘以後是2400000000
: 問一下 40000L "L"是什麼意思 我不知道 所以我就假設他是40000
既然原po已經回答了,我也想說明一下為什麼我主張改成unsigned會比較好。
我的推文寫到即使題目改成unsigned,也可以更改變數值到超過能表述的範圍。
此時詢問學生"為什麼?"的意義會和signed一樣甚或更好。
根據C++ Primer 4/e侯捷老師所翻譯的中文本p.37,
在同樣超出能表述範圍的情況下,
unsigned的結果是該數值除以所能表述的最大值的餘數,
而signed的結果則是由編譯器決定。
有時我們習慣使用自己慣用的編譯器來編譯執行,再看結果是什麼,
卻很容易忽略像是未定義行為,或編譯器有權決定等等的因素會影響答案。
當然出題者是要問"為什麼?",而不只是要一個數值,
但我以為同時有signed和unsigned對照在這題會比較完整。
另外,在版上有看到推文建議原po應該閱讀的書籍。
如果不講求速效的話,C++ Primer遲早還是要看的。
然而,
讀英文版英文要好;讀中文版中文要好,
這不管在那一本書的那一種版本都適用。
比爾蓋天
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.32.177.97
推
02/16 22:47, , 1F
02/16 22:47, 1F
→
02/16 22:48, , 2F
02/16 22:48, 2F
推
02/17 02:48, , 3F
02/17 02:48, 3F
→
02/17 02:48, , 4F
02/17 02:48, 4F
推
02/17 06:22, , 5F
02/17 06:22, 5F
→
02/17 06:23, , 6F
02/17 06:23, 6F
→
02/17 06:24, , 7F
02/17 06:24, 7F
推
02/17 06:29, , 8F
02/17 06:29, 8F
→
02/17 06:44, , 9F
02/17 06:44, 9F
→
02/17 06:45, , 10F
02/17 06:45, 10F
→
02/17 06:45, , 11F
02/17 06:45, 11F
推
02/18 22:34, , 12F
02/18 22:34, 12F
→
02/18 22:34, , 13F
02/18 22:34, 13F
討論串 (同標題文章)