我有兩個控制檯應用程序(msvc 2008)。當它們被零除時, 它們的行爲不同。我的問題如下。msvc除以零
a)在一個應用中,除零的結果顯示爲1.#INF000000000000作爲調試器。
Printf「%4.1f」將其打印爲「1. $」。
b)在另一個應用程序中,在調試器中除以零9.2559631349317831e + 061的結果。
Printf「%4.1f」將其打印爲「-1。$」。
Why
既不應用具有零對DIV異常或信號?
是不是例外/信號默認dehavour?什麼是
define
以上兩個常量的名字?一般情況下,如果我在div之前檢查分母== 0,那麼我應該使用哪個
define
值作爲虛擬結果? DBL_MIN好嗎?我發現NaN值不是。我可以告訴stdio如何將一個特定的double值格式化爲char字符串我告訴它嗎?我意識到這是太多要問。但是,以我的應用程序中的viro DBL_MIN爲例,說告訴stdio打印,比如「n/a」會很好。
我應該如何處理,以實現最佳的可移植性,零除以及打印結果?通過打印,我的意思是「打印數字爲'不適用',如果它是由零除的結果」。
在這裏我不清楚,我怎樣才能以便攜的方式在一個雙倍的情況下代表零的結果。爲什麼兩個不同的結果?它是編譯器選項?
編譯器是C++,但使用非常像C.感謝。
因爲除零不是一個指定的標準異常。看到這篇文章http://stackoverflow.com/questions/4747934/c-catch-a-divide-by-zero-error獲取更多信息。 – Mahesh 2011-03-22 23:01:22
@Mahesh:這個問題處理*整數*除零。這個問題是關於浮點運算,它們的處理方式大不相同。 – Lindydancer 2011-04-09 10:35:19