看板 C_and_CPP 關於我們 聯絡資訊
問題如下: short s1 = 2; short s2 = 5; double dResult = s2 / s1; cout << dResult << endl; 依個人的理解,s2 和 s1 運算的結果會先暫存起來,再assign給 dResult 所以 dResult 印出來會是 2,而不是 2.5 除非在 s2 前面加一個 (double) 將之轉型為double,才會是預期的結果 但是: s1 = 1000; s2 = 1000; int nResult = s1 * s2; cout << nResult << endl; 在這邊 s1 * s2 運算的結果暫存起來再assign給 nResult,應該會造成溢位 然後 nResult 印出來的結果是錯的(因為沒有先將short轉型成int) 可是 nResult 印出來的結果卻是 1000000,正確的結果 為什麼呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.240.232.124
akasan:因為他是先轉成 int 再作運算 08/19 00:03
akasan:詳細的等版大去翻標準給你看吧XD 08/19 00:04
tropical72:http://codepad.org/ERqnIsLD 08/19 00:06
purpose:講好一個雞排45,買三塊只收一百算多招待的,差不多這意思 08/19 00:18
james732:樓上害我餓了 〒△〒 08/19 00:20
Favonia:一樓正確。然後這叫做 integer promotion 08/20 09:55