當寫這樣的:條件運算符是否應該評估所有參數?
1: inline double f(double arg) {
2: return arg == 0.0 ? 0.0 : 1./arg;
3: }
4: const double d = f(0.0);
微軟的Visual Studio 2005的64位編譯器
line 4: warning C4723: potential divide by 0
來雖然你和我可以清楚地看到,一個div被零是永遠去發生...
或者是它?
保重,比較關於平等的「雙重」論點。邪惡的魔法發生在那裏...... – SadSido 2009-11-24 08:16:58
不,它不。完美定義的過程。特別是'0.0 == -0.0'。因此,對於定義了1./arg的所有值集合,我們知道'arg!= 0.0'。 – MSalters 2009-11-26 15:04:25
@ MSalters:但由於四捨五入錯誤,arg可能不是0.0(或-0.0),如果您期望。 – jalf 2009-11-26 15:31:06