我目前不得不为一个同事做一些假期替换,并且必须改变他的一些代码。真的==特别的东西?
我发现了很多的条件,像
if (true == variablename) {...}
我只是想知道,如果有什么特别之处语法?像我们大多数人一样,我只会写
if (variablename) {...}
改为。令我感到不适的是左侧的情况。它会在右侧,我只是期望同事不会在布尔条件下前进。
是否有任何性能差异或类似的东西,通过把真实的开始?
我目前不得不为一个同事做一些假期替换,并且必须改变他的一些代码。真的==特别的东西?
我发现了很多的条件,像
if (true == variablename) {...}
我只是想知道,如果有什么特别之处语法?像我们大多数人一样,我只会写
if (variablename) {...}
改为。令我感到不适的是左侧的情况。它会在右侧,我只是期望同事不会在布尔条件下前进。
是否有任何性能差异或类似的东西,通过把真实的开始?
这可能是从学习C/C++,它是典型的通过这个bug咬吃剩的:
if (variablename = true) { ... }
之前的编译器调整为警告这个(请注意,它的转让,不一个比较),上面的代码默默执行一个bug。
不过,如果你学会了写其他方式表达,你就不会通过上面的代码咬伤,因为它不会以这种形式编译:
if (true = variablename) { ... }
在C#中,但是,它是不是一个问题,你可以像没有比较那样写出它(只要它与true
相比),或者将文字放在比较运算符的右侧。
C++ - 参数似乎是合法的。他很早就开始编码了,我相信:) –
不,没有任何区别,它只是一种代码风格。那是。
浮现在我的脑海里唯一的一点是:
如果variablename
成为Nullable type(由于一些重构,打字错误或任何其他),这段代码仍然编译和正常工作。
相反,如果你写这样的:
if (variablename) {...}
你会得到编译时错误,所以你会被迫改变代码。
谢谢。这可能是一个问题,我没有想到,但是如果真的是对的,它不应该受到影响,对吗? –
@ OleAlbers:不,没有任何区别。 – Tigran
是否有任何性能差异或类似的东西,通过把真实的开始?
我认为在开始的时候对真正的C++背景是很常见的,通过将if(b = true)
而不是if(b==true)
来分配价值很容易;而你不能这样做if(true = b)
[检查布尔是否为真?](http://stackoverflow.com/questions/3685002/check-if-boolean-is-true) – NINCOMPOOP
绝对不。这主要是关于左侧的“真实”站位。 –