c++ - VS2008 c++ 编译器会优化以下 if 语句吗?

标签 c++ optimization compiler-construction coding-style code-readability

if (false == x) { ...}

相对于:

if (!x) { ... }

if (false == f1()) { ...}

相对于:

if (!f1()) { ... }

我认为 if(false == ... 版本更具可读性。您是否同意,或者您可以提出其他技巧?它会一样快吗?谢谢。

这就是我不喜欢 !x 的原因:

if (25 == a->function1(12345, 6789) &&
    45 == b->function1(12345, 6789) &&
    !c->someOtherFunction(123)) { ... }

以下似乎更好:

if (25 == a->function1(12345, 6789) &&
    45 == b->function1(12345, 6789) &&
    false == c->someOtherFunction(123)) { ... }

最佳答案

我个人认为 if (!x) { ... } 的形式最易读,但现在它们都会产生相同的代码。

编辑:在您的示例中,我将执行以下操作:

if (  a->function1(12345, 6789) == 25 &&
      b->function1(12345, 6789) == 45 &&
    !(c->someOtherFunction(123))) { ... }

但这真的只是个人喜好问题。做对你来说最易读的事情。这不会产生任何影响。

关于c++ - VS2008 c++ 编译器会优化以下 if 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1911572/

相关文章:

c++ - 在 C++ 中使用 return 语句退出函数

c++ - C++中比较的效率? (绝对值(X)> 1 对比绝对值(x)!= 0)

c++ - 安装 Stan for R 和使用 Rcpp 时编译出错

android - 尝试在 Android 上将双线性插值代码从 Java 转换为 C/C++

header 中的c++数组声明

c++ - 快速 C++ I/O 将字符串(字符数组)读入 vector ,并解决错误

c# - 加速 40,000 行的 linq 查询

ios - 理解 Cocos2d 中的 CCBatchNode

c - 如何在二进制代码中找到函数边界

java - 对编译器处理继承和方法调用感到困惑