【问题标题】:Equality operator while checking condition in C++在 C++ 中检查条件时的相等运算符
【发布时间】:2012-05-04 18:07:15
【问题描述】:

这两种情况有区别吗:

if (a==5)if (5==a)?

【问题讨论】:

标签: visual-c++


【解决方案1】:

不,根本没有区别。

人们过去常常写这个表达式 5==a 而不是 a==5,因此可以在 C/C++ 上捕获 a=5 错误,其中该表达式完全有效并且总是计算为 true。这样,如果程序员(错误地)编写了表达式5=a,那么它会得到一个编译器错误。

【讨论】:

    【解决方案2】:

    两者通常是相同的。

    有些人建议将常量放在第一位 (if (5==a)),因为这样,如果您输入错误并遗漏其中一个 = 以获取:if (5=a),编译器将给出错误消息,而 @ 987654324@ 将编译并执行,但可能不会执行您想要的操作。

    一些编译器会对后者发出警告(例如,最近的 gnu 迭代),但其他编译器不会(Visual C++ 属于后者)。

    【讨论】:

      【解决方案3】:

      如果 'a' 指向一个覆盖 == 的对象,那么理论上你可能会得到不同的结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        相关资源
        最近更新 更多