如果不同于0除以

Bas*_*asj 0 c++ division c-preprocessor

我经常在我的代码中有这样的陈述:

(b != 0) ? a / b : a
Run Code Online (Sandbox Code Playgroud)

在速度和最佳C++实践方面,做功能更好

float divifnotzero(a,b) { ... return ... }
Run Code Online (Sandbox Code Playgroud)

或像这样的预处理器宏?

#define divifnotzero(a,b) ((b!=0)?a/b:a)
Run Code Online (Sandbox Code Playgroud)

ben*_*low 9

预处理器只是在你使用宏的地方替换代码,因此没有区别.至于一个函数,你的编译器几乎肯定会内联它,所以再次应该没有速度差异.所以,鉴于我会使用函数来提高可读性.