2010-05-14 6 views
4

이 "EXAM"질문을 고려해왜이 코드가 아무 것도 출력하지 않습니까?

int main() 
{ 
    int a=10,b=20; 
    char x=1,y=0; 
    if(a,b,x,y) 
    { 
     printf("EXAM"); 
    } 
} 

이 전혀 아무것도 인쇄되지 않는 이유를 알려 주시기 바랍니다.

+1

안녕 골룸으로 설정됩니다와 반면에 정의되지 않은 값을 가지고 함께 그래서, 나는 당신을보고 놀랐어요. 어쨌든, 나에게 출력물은''아무 것도 인쇄 안된다 ''가 아니고 나는 C 질문이 출력되는 것을 볼 수 없다. – sbi

답변

3

a,b,x,y의 결과는 y (쉼표 연산자가 오른쪽 피연산자의 결과를 계산하므로)이고 y는 0이며 false입니다.

2

쉼표 연산자는 y 인 마지막 명령문을 반환합니다. y이 0이므로 if 문은 false로 평가되므로 printf은 절대로 실행되지 않습니다.

1

표현식 a,b,x,yy으로 평가되므로 0으로 평가되므로 해당 블록이 실행되지 않습니다. 쉼표 연산자는 모든 명령문을 실행하고 마지막 값을 반환합니다. 1 식을 평가하고 두 번째를 반환 -

if (a && b && x && y) { ... } 
11

Comma operator : 당신이 논리적 결합을 원하는 경우에, && 연산자를 사용합니다. 따라서 a,b,x,y은 0에 저장된 값을 반환합니다.

0

쉼표 연산자가 가장 오른쪽 값을 반환한다고 이미 언급 한 사람도 있습니다. 당신이 인쇄 된 값을 얻고 싶다면이 변수의 어떤 사실 사용은 논리적 경우, 또는 :

int main() 
{ 
    int a=10,b=20; 
    char x=1,y=0; 
    if(a || b || x || y) 
    { 
     printf("EXAM"); 
    } 
} 

그러나 쉼표 모든 식을 평가한다는 사실을 인식 OR 연산자는 값으로 즉시 중지 반면, 사실이다.

int a = 1; 
int b; 
if(a || b = 1) { ... } 

b는

int a = 1; 
int b; 
if(a, b = 1) { ... } 

(B)가 1

관련 문제