2013-06-27 3 views
4

저는 현재 동료를 대신하여 휴일 교환을해야하고 코드를 약간 변경해야합니다. 진실에 관해 특별한 점 ==?

는 난 그냥이 구문에 대한 특별한 무언가가 있는지 궁금

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

같은 조건을 많이 발견? 우리 대부분처럼 나는 단지 쓸 것이다

if (variablename) {...} 

대신에. 저를 자극하는 것은 상태의 왼쪽에 진실합니다. 오른쪽에 있을까요? 동료가 부울 조건으로 발전하지 않을 것이라고 기대하고 싶습니다.

처음에 true로 설정하여 성능 차이 또는 그와 비슷한 점이 있습니까?

+0

가능한 부울 확인? (http://stackoverflow.com/questions/3685002/check-if-boolean-is-true) – NINCOMPOOP

+0

No. 절대적으로하지. 이것은 주로 LEFT 쪽의 "참"서에 관한 것입니다. –

답변

11

이 가능성은이 버그에 물린 될 전형적인이었다 C/C++을 학습에서 남은입니다 비교), 위의 코드는 자동으로 버그로 실행되었습니다. 당신이 다른 방법으로 주위의 표현을 쓰기 배운 경우이 양식에 컴파일되지 않기 때문에

그러나, 당신은 위의 코드에 의해 물리지 않을 것이다 : C#에서

if (true = variablename) { ... } 

을, 그러나, 그것은이다 문제가되지 않는다면 비교하지 않고 표시 한 것처럼 쓸 수 있습니다 (어쨌든 true과 비교하는 경우). 또는 비교 연산자의 오른쪽에 리터럴을 넣으십시오.

+0

C++ - 인수가 합법적 인 것처럼 보입니다.그는 오래 전에 코딩을 시작, 나는 믿습니다 :) –

4

아니요 차이가 없습니다. 단지 코드 스타일 일뿐입니다. 그건. 내 마음에 와서

있는 유일한 방법은 다음과 같습니다 variablename 예상대로 Nullable type이 (일부 리팩토링, 입력 오류 또는 어떤 다른 사람 때문에),이 코드는 여전히 컴파일하고 작동이됩니다

합니다.

당신처럼 쓰는 대신하는 경우 :

if (variablename) {...} 

당신이 코드를 변경해야 수 있도록, 컴파일시 오류가납니다. 컴파일러는,이 과제를 수행하는 것이이 (통지에 대해하지 경고 조정

if (variablename = true) { ... } 

하기 전에 :

+0

감사합니다. 그것은 요점 일 수도 있지만, 나는 생각하지 않았습니다. 그러나 진실이 왼쪽이나 오른쪽이라면 영향을 받아서는 안됩니다. 맞습니까? –

+1

@OleAlbers : 아니, 차이는 없습니다. – Tigran

2

처음에 true로 설정하여 성능 차이가 있습니까?

나는 C++ 배경을 가진 많은 사람들에게 공통적이라고 생각한다. if(b==true) 대신에 if(b = true)을 넣으면 값을 할당하기가 쉽습니다. 반면에 당신은 같은 일을 할 수 없었습니다. if(true = b)