[.NET] 除以零

看板Visual_Basic作者 (矇面加菲獅)時間17年前 (2008/12/05 19:59), 編輯推噓0(005)
留言5則, 2人參與, 最新討論串1/1
不知道算不算發現的太晚了,昨天才發現到有這個現象 1) Response.Write(1 / 0) 2) Dim a As Int16 = 1, b As Int16 = 0 Dim s As String = a / b Response.Write(s) 兩種寫法的執行結果都是"正無窮大" 3) Dim a As Int16 = 1, b As Int16 = 0, c As Int16 = a / b Response.Write(c) 第三種寫法的執行結果就是 System.OverflowException: 數學運算導致溢位。 也許是說除以零的結果可以輸出成字串,但不能存入Intxxxx之類的變數中 測試環境:VB2005、VB2008 另外,C#比較合理,完全不允許除以零,不管哪種寫法都是產生例外狀況 -- ▃▅▇▆▄ ▆▂▃ ` 逝去感如何能留住,半點遺留殊不易,██▅▇▄▃ ▇▃▂" . █████████▃i ▁▄▇ 更多悽悽慘慘的遭遇………██▆▃ █▅▆▃ˍ▄* ▂█▄▇▅▂. 我不知道,王~八~蛋~~! ▂▆███ █▄▃ 。fumizuki。Check。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.233.58.149

12/05 23:20, , 1F
gcc有類似的「巧門」,不過反過來
12/05 23:20, 1F

12/05 23:20, , 2F
在程式中寫k/0在compile-time就會被發現
12/05 23:20, 2F

12/05 23:21, , 3F
宣告a=1, b=0,再來個c=a/b,就要run-time才會發現錯誤
12/05 23:21, 3F

12/05 23:22, , 4F
不對…也沒有真的反過來…反正有差別就對了 @@
12/05 23:22, 4F

12/06 08:44, , 5F
1/0在vb.net是允許的喔 編譯通過 執行階段也不會錯誤
12/06 08:44, 5F
文章代碼(AID): #19EHUOnV (Visual_Basic)