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