2013-06-27 44 views
4

我目前不得不为一个同事做一些假期替换,并且必须改变他的一些代码。真的==特别的东西?

我发现了很多的条件,像

if (true == variablename) {...} 

我只是想知道,如果有什么特别之处语法?像我们大多数人一样,我只会写

if (variablename) {...} 

改为。令我感到不适的是左侧的情况。它会在右侧,我只是期望同事不会在布尔条件下前进。

是否有任何性能差异或类似的东西,通过把真实的开始?

+0

[检查布尔是否为真?](http://stackoverflow.com/questions/3685002/check-if-boolean-is-true) – NINCOMPOOP

+0

绝对不。这主要是关于左侧的“真实”站位。 –

回答

11

这可能是从学习C/C++,它是典型的通过这个bug咬吃剩的:

if (variablename = true) { ... } 

之前的编译器调整为警告这个(请注意,它的转让,不一个比较),上面的代码默默执行一个bug。

不过,如果你学会了写其他方式表达,你就不会通过上面的代码咬伤,因为它不会以这种形式编译:

if (true = variablename) { ... } 

在C#中,但是,它是不是一个问题,你可以像没有比较那样写出它(只要它与true相比),或者将文字放在比较运算符的右侧。

+0

C++ - 参数似乎是合法的。他很早就开始编码了,我相信:) –

4

不,没有任何区别,它只是一种代码风格。那是。

浮现在我的脑海里唯一的一点是:

如果variablename成为Nullable type(由于一些重构,打字错误或任何其他),这段代码仍然编译和正常工作。

相反,如果你写这样的:

if (variablename) {...} 

你会得到编译时错误,所以你会被迫改变代码。

+0

谢谢。这可能是一个问题,我没有想到,但是如果真的是对的,它不应该受到影响,对吗? –

+1

@ OleAlbers:不,没有任何区别。 – Tigran

2

是否有任何性能差异或类似的东西,通过把真实的开始?

我认为在开始的时候对真正的C++背景是很常见的,通过将if(b = true)而不是if(b==true)来分配价值很容易;而你不能这样做if(true = b)