[VBA ] 為何會溢位?

看板Visual_Basic作者 (.......)時間9年前 (2015/12/03 15:46), 編輯推噓2(203)
留言5則, 4人參與, 最新討論串1/1
Dim na As Integer na = Cells(2, 2) Label1.Caption = (na + 1) * na / 2 如果是上面這樣,當cells(2,2)大於180時會出現溢位錯誤。 但是如果改成以下,不透過na就沒問題 Label1.Caption = (Cells(2, 2) + 1) * Cells(2, 2) / 2 請問這是為何? 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.61.176.163 ※ 文章網址: https://www.ptt.cc/bbs/Visual_Basic/M.1449128791.A.6FC.html

12/03 16:30, , 1F
超過 32767
12/03 16:30, 1F

12/04 00:34, , 2F
會不會是運算順序的問題,改為(na+1)/2*na呢?
12/04 00:34, 2F

12/04 13:08, , 3F
改成Dim na as Long就沒問題,我想問的是要如何解釋這現象
12/04 13:08, 3F

12/04 13:18, , 4F
(181+1)*181=32942>32767 先乘除後加減啊
12/04 13:18, 4F

12/04 13:19, , 5F
運算順序的問題...
12/04 13:19, 5F
文章代碼(AID): #1MN_DNRy (Visual_Basic)
文章代碼(AID): #1MN_DNRy (Visual_Basic)