[問題] 轉型的問題

看板C_and_CPP (C/C++)作者 (改)時間14年前 (2011/08/18 23:52), 編輯推噓2(204)
留言6則, 5人參與, 最新討論串2/2 (看更多)
問題如下: 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

08/19 00:03, , 1F
因為他是先轉成 int 再作運算
08/19 00:03, 1F

08/19 00:04, , 2F
詳細的等版大去翻標準給你看吧XD
08/19 00:04, 2F

08/19 00:06, , 3F

08/19 00:18, , 4F
講好一個雞排45,買三塊只收一百算多招待的,差不多這意思
08/19 00:18, 4F

08/19 00:20, , 5F
樓上害我餓了 〒△〒
08/19 00:20, 5F

08/20 09:55, , 6F
一樓正確。然後這叫做 integer promotion
08/20 09:55, 6F
文章代碼(AID): #1EJJKbnU (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1EJJKbnU (C_and_CPP)