2014-12-05 4 views
-3

다음 코드는 s에서 수행되고 있는지 이해할 수 없다 :! int_variable--의 의미는 무엇입니까?

if(!s--) 

snegation 운영자 호출되는 int

+1

1) 이것은 기능이 아닙니다. 2) 나누기와 정복을 사용하십시오. 그곳에는 단지 세 가지 밖에 없습니다. '!'와'--'. –

+0

처음에 컴파일러는 s가 0인지 확인하여 if 블록에 입력합니다. 그러면 s가 1 씩 감소합니다. – Mukit09

+0

Thx all! 지금 이해 : –

답변

2

!입니다. 논리 연산자입니다.

여기에서 wikipedia entry을 참조하십시오.

if(!s--) 

s0 경우는, s의 값 0 아닌지

  1. 검사를 실행하는 순서, if 조건 그렇지 성공 [! 조작 덕분에, 실패이다.
  2. 그 후 s을 한 단위 씩 감소시킵니다.
  3. if 조건의 평가에 따라 [if 조건 또는 다음 코드 블록 아래의 코드] 실행을 계속하십시오.
+0

, 감사합니다. –

+0

@JensGustedt 감사합니다. :-) –

3

실제로 오해의 소지가 있습니다.

테스트 중입니다. s은 0과 다릅니다 (if (!s)). 그리고 나서 결과가 어떻든간에 당신은 그것을 줄이고 있습니다.

그래서 두 가지 작업이 있습니다. 다음과 같이 작성할 수 있습니다.

if (!s) 
{ 
    s--; 
    //... 
} 
else 
{ 
    s--; 
}