在這個問題上的話題是如何讓VS檢查在C#中的算術溢出,並拋出一個異常:C# Overflow not Working? How to enable Overflow Checking?爲什麼你想要發生整數溢出?
一說一些奇怪的評論,並得到了upvoted多,我希望你能幫助我在這裏:
您還可以使用checked關鍵字來包裝一個語句或一組語句,以便明確檢查它們的算術溢出。設置項目範圍的財產有點冒險,因爲往往溢出是一個相當合理的期望。
我不太瞭解硬件,但知道溢出與寄存器工作方式有關。我一直認爲溢出導致未定義的行爲,應儘可能防止。 (在'正常'項目中,不寫惡意代碼)
爲什麼你會有期望溢出發生,爲什麼你不會總是阻止它,如果你有可能? (通過設置相應的編譯器選項)
http://en.wikipedia.org/wiki/Integer_overflow – 2011-02-02 21:21:58
您的語句「溢出會導致未定義的行爲」不正確......它的定義非常明確,特別是在整數情況下。您的陳述「我對硬件知之甚少」在這種情況下說的是......您應該閱讀一下關於二進制文件以及在機器級別如何進行加法的說明 – JoelFan 2011-02-03 05:55:37
該聲明可能來自C/C++思維模式,溢出是一種「未定義的行爲」,這意味着編譯器編寫者可以做你不希望優化的事情。 CPU確實有一個定義良好的行爲並不重要,編譯器編寫者使用bignum常量表達式求值優化器,可能會檢測到它並消除代碼「它不是C/C++程序,因此我可以將其分解」。我猜,沒有人需要關心C#,因爲到時候新的硬件做不同的事情,MS已經進入了一些新的銀彈 – Rob11311 2014-06-06 13:50:43