2017-09-04 1 views
1

나는 모든 일 C 번호를 읽지 않는, 나를 던지고 그 최근이 뭔가 커밋 읽고있다 : 나는 문제가 정신적으로 & & 및 구문 분석하는 데 문제C# : 주위에 공백이 있습니다! 연산자, 해석 방법?

if ((length > maxLength) && ! IsTable(furniture.FurnitureType)) 
do_something; 

을! 연산자, 특히 때문에! 연산자 뒤에 공백이 있습니다.

질문을 증류 할 수 있습니다 구체적인 질문은

if ((length > maxLength) && !IsTable(furniture.FurnitureType)) 

:

if ((length > maxLength) && ! IsTable(furniture.FurnitureType)) 

(공백없이)와 같은 (공간)가

  • IsTable()이 true인지 여부 또는 거짓, 평가 변경?
  • 공간이 있습니다! 기본적으로 첫 번째 평가에서 모든 작업을 수행합니까?

또는 허용되는 구문에 대해 누락 된 부분이 있습니까?

+0

* 제어 * –

+1

당신은 문제가 있습니다 ... "파싱"합니까? 프로그래밍 방식으로 읽으려고하거나 아니면 단지 그것이하는 일을 이해하려고 노력하고 있습니까? bang 연산자는 "not"의 약자이며 대개 바로 오른쪽에있는 것과 연결됩니다. – Felype

+1

IsTable은 length> maxlength가 true 인 경우에만 호출됩니다. true이면 IsTable이 호출되고 false를 반환하면 논리 NOT 연산자 (!)가 false 반환 값에 적용되므로 _do_something_이 실행됩니다. 공백은 의미가 없습니다. – Steve

답변

5

C#에서 && 연산자는 첫 번째 조건이 true 인 경우에만 두 번째 조건을 검사한다는 것을 의미합니다.

따라서 (length > maxLength)true 인 경우에만 !IsTable(furniture.FurnitureType) 조건을 검사합니다.

C#을 컴파일하면 대부분의 연산자 뒤에 공백이 무시됩니다 (예 : !). 따라서 ! 이후의 공간은 의미가 없습니다.

!IsTable(furniture.FurnitureType) 

그리고 IsTable(furniture.FurnitureType)true 인 경우, 그 결과로 false 것을 의미하며, 다른 방법으로 주위 :

! IsTable(furniture.FurnitureType) 

은 같다.

따라서 전체 if 절은 length > maxLength이고 FurnitureType은 표가 아닌 경우에만 true이됩니다. 의자, 책상, 옷장 또는 의자. 그러나 테이블은 아닙니다.

+0

연산자 뒤의 공백은 아무 것도 의미하지 않지만 연산자 근처의 공백은 한 연산자를 다른 연산자와 구분할 때 무언가를 의미 할 수 있습니다. 고안된 예제는'+ + a'가'++ a' 나'++ a'와 같지 않다는 것입니다. –

+0

@ LasseV.Karlsen 지적 해 주셔서 감사합니다. 나는 대답을 바꾸었다. –

+1

당신이 나에게 묻는다면 꼭 필요한 것은 아니지만, 나는 매우 고의적 인 모퉁이의 경우에 대해 질질 끌며 지적했다. :) –

관련 문제