作者fumizuki (矇面加菲獅)
看板Visual_Basic
標題[.NET] 除以零
時間Fri Dec 5 19:59:18 2008
不知道算不算發現的太晚了,昨天才發現到有這個現象
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
→ MOONRAKER:gcc有類似的「巧門」,不過反過來 12/05 23:20
→ MOONRAKER:在程式中寫k/0在compile-time就會被發現 12/05 23:20
→ MOONRAKER:宣告a=1, b=0,再來個c=a/b,就要run-time才會發現錯誤 12/05 23:21
→ MOONRAKER:不對…也沒有真的反過來…反正有差別就對了 @@ 12/05 23:22
→ fumizuki:1/0在vb.net是允許的喔 編譯通過 執行階段也不會錯誤 12/06 08:44