Jon*_*Jon 14

因为这种形式使得通过忘记其中一个等号来引入错误变得更加困难.想象一下,如果你这样做:

if (k = 5)
Run Code Online (Sandbox Code Playgroud)

这是作为比较,但它现在是一个任务!更糟糕的是,它是合法的,它会以多种方式搞乱你的程序(值的k变化,条件总是评估true).

与此形成鲜明对比

if (5 = k)
Run Code Online (Sandbox Code Playgroud)

这是不合法的(您不能分配给文字),因此编译器会立即将其标记为错误.

也就是说,这种编写代码的方式(条件中的赋值)在今天并不像以前那样流行.大多数现代编译器会将此标记为警告,因此不太可能未被发现.我个人不喜欢第二种形式,因为编译器是帮助我不使用它.

  • ...除非你介意你的编译器警告. (4认同)

Ser*_*sev 6

如果你输错了

if (k = 5) // instead of ==
Run Code Online (Sandbox Code Playgroud)

然后你可能刚刚介绍了一个很难找到的bug.(实际上,以前很难找到.现在,大多数编译器会将此标记为警告.)

但是,这将导致编译时错误

if (5 = k)
Run Code Online (Sandbox Code Playgroud)

顺便说一句,这种风格叫做尤达条件:-)

  • 尤达条件+1 - 忘记了. (2认同)
  • 如果您启用了编译器警告,则很难找到该错误. (2认同)

归档时间:

查看次数:

3606 次

最近记录:

14 年,8 月 前