我有一个基础问题一直困扰着我,无法弄清楚为什么程序员要使用它。
if (0 == Indx)
{
//do something
}
上面的代码做了什么,与下面的代码有何不同。
if (Indx == 0)
{
// do something
}
我正在努力理解一些嵌入式系统的源代码。
我有一个基础问题一直困扰着我,无法弄清楚为什么程序员要使用它。
if (0 == Indx)
{
//do something
}
if (Indx == 0)
{
// do something
}
我正在努力理解一些嵌入式系统的源代码。
有些程序员更喜欢使用这个:
if (0 == Indx)
由于这行代码
if (Indx == 0)
很容易因为编程错误(而不是比较符号)而编写成赋值语句。
if (Indx = 0) //assignment, not comparison.
在C语言中,这是完全有效的。
Indx = 0
是一个返回0的表达式(也将0分配给Indx)。
正如此答案的评论中提到的那样,如果您在if语句内部有这样的赋值,大多数现代编译器都会向您显示警告。
您可以在这里阅读更多关于优点与缺点的信息。
if (Indx = 0)
不会发出警告。现在,每个好的编译器都会给你警告,所以 Yoda 条件语句已经过时了。当然,像往常一样,旧观念永远不会消失,只有支持者会消失。 - user3386109if(0<=some_long_call(arg0,arg1,arg2,subcall(subarg0,subarg1)))
,而不是if(some_long_call(arg0,arg1,arg2,subcall(subarg0,subarg1))>=0)
。我说的话像尤达一样,因为我习惯于优化毫秒级别的操作。 - Petr Skocik