当写这样的:条件运算符是否应该评估所有参数?
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