2015-01-29 2 views
0

의 출력을 설명해주십시오 나는 C 프로그래밍을 시도하고 있었고, 난 작은 코드를 작성하지만 2 1 1 2 등이

#include<stdio.h> 
int main() 
{ 

    int x,y,z,k; 
    x=y=z=k=1; 

    z=x++||y++&&k++; 
    printf("%d %d %d %d\n",x,y,z,k); 
} 

내가 기대 한 출력을 이해 할 수없는이기 때문에 & &의 우선 순위 | 이상 || 하지만 출력은 2 1 1 1 를 설명하십시오.

답변

5

C는 x++true으로 평가 될 때 평가되지 않으며 증가가 발생하지 않습니다.

+0

그러나 우선 순위가 &&이면 더 높습니다. 그래서 (x ++ || y ++)와 k ++를 평가해야하는데, x ++가 참이지만 k ++가 올바르게 수행되어야하기 때문에 y ++가 수행되지 않을 것이라는 데 동의합니까? – maneesh

+0

Nope. 'x ++'가'true'로 평가되는 것으로 충분합니다. '||'의 오른쪽 부분으로 무엇이든 할 필요가 없습니다. 이 대답은 정확합니다. – Bathsheba

+0

@maneeshbhunwal; [답변] (http://stackoverflow.com/a/17432858/2455888) – haccks