在许多语言中,作业在条件上是合法的.我从来不明白这背后的原因.你为什么要写:
if (var1 = var2) {
...
}
Run Code Online (Sandbox Code Playgroud)
代替:
var1 = var2;
if (var1) {
...
}
Run Code Online (Sandbox Code Playgroud) 我最近失去了一些时间来弄清楚我的代码中的错误是由一个错字引起的:
if(a=b)
Run Code Online (Sandbox Code Playgroud)
代替:
if(a==b)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有任何特殊情况你想要在if语句中为变量赋值,或者如果没有,为什么编译器不会发出警告或错误?
可能重复:
无意中使用=而不是==
C++编译器通过您编写的警告让您知道
if( a = b ) { //...
Run Code Online (Sandbox Code Playgroud)
并且这可能是一个错误,你当然想写
if( a == b ) { //...
Run Code Online (Sandbox Code Playgroud)
但有没有一种情况应该忽略警告,因为这是使用这个"功能"的好方法?我没有看到任何代码清晰度可能的原因,那么它有用吗?
杜佩:空无与伦比
一生以前我遇到过一篇文章,解释说以下内容并不相同(在c#中):
if (o == null) {}
if (null == o) {}
Run Code Online (Sandbox Code Playgroud)
文章解释说后者是首选,因为它导致更准确的测试.从那时起我一直在编码.现在我了解了很多,我正在寻找这篇文章,或者其他类似文章,看看确切的结果是什么,但我找不到关于这个主题的任何内容.
思考?有区别吗?乍一看会说不.但谁知道IL和C#编译的内容会发生什么.