【发布时间】:2012-05-04 18:07:15
【问题描述】:
这两种情况有区别吗:
if (a==5) 和 if (5==a)?
【问题讨论】:
标签: visual-c++
这两种情况有区别吗:
if (a==5) 和 if (5==a)?
【问题讨论】:
标签: visual-c++
不,根本没有区别。
人们过去常常写这个表达式 5==a 而不是 a==5,因此可以在 C/C++ 上捕获 a=5 错误,其中该表达式完全有效并且总是计算为 true。这样,如果程序员(错误地)编写了表达式5=a,那么它会得到一个编译器错误。
【讨论】:
两者通常是相同的。
有些人建议将常量放在第一位 (if (5==a)),因为这样,如果您输入错误并遗漏其中一个 = 以获取:if (5=a),编译器将给出错误消息,而 @ 987654324@ 将编译并执行,但可能不会执行您想要的操作。
一些编译器会对后者发出警告(例如,最近的 gnu 迭代),但其他编译器不会(Visual C++ 属于后者)。
【讨论】:
如果 'a' 指向一个覆盖 == 的对象,那么理论上你可能会得到不同的结果。
【讨论】: