2016-10-11 3 views
-5

다음 코드 : 결과가 0이 얼마나C 프로그래밍 작업 및 값

int z=10,y=5; 
z=z&&!y; 
printf("%d\n",z); 

출력 0 사람이 설명 할 수 있습니까?

+7

다른 결과는 무엇입니까? 그리고 왜? –

+0

수식에 괄호와 공백을 사용하는 것이 더 나은 경우가 많아서 읽기가 훨씬 쉬워집니다. 그런 식으로 운영자의 우선 순위도 분명합니다. 예 : z = z 및 & (!y);을 쓰면 표현의 의도가 훨씬 명확 해집니다. – mdewit

답변

3

논리 NOT 연산자는 피연산자가 0이 아니면 0을, 피연산자가 0이면 1을 산출합니다. y은 5이므로 !y0입니다. 논리 AND 연산자 수율 0

1. 그래서, 전체 표현식이 z && !y;0 (z0에 할당되는 인쇄)된다.

2

&&은 부울 연산입니다. 이 문맥에서 0은 거짓이고 0이 아닌 값은 참을 의미합니다. 이 때문에 z&&!y0으로 평가되므로 0은 z에 할당됩니다.

2

(5)

10 0이므로 참으로 평가보다 더 그것은 = 10 AND NOT 간단히 Z된다. Not 5는 0이 될 것이고, 1과 0은 0이 될 것입니다!