2013-11-21 2 views
0

다음은 C 프로그램입니다.논리 연산자가없는 경우 평가 순서

나는 그걸 제외하고는 다른 곳으로 들어가지만 들어간다.

#include<stdio.h> 
void main() 
{ 
    int iAge = 10; 
    int iMinAge = 1; 
    int iMaxAge = 18; 

    if(iMinAge >= iAge <= iMaxAge) 
    { 
     printf("\n in if..."); 
    } 
    else 
    { 
     printf("\n in else..."); 
    } 
} 

평가 순서는 무엇입니까?

+1

http://en.wikipedia.org/wiki/Operators_in_C_and_C++#Operator_precedence – this

답변

3
iMinAge >= iAge <= iMaxAge 

(iMinAge >= iAge) <= iMaxAge 

동등하므로

0 <= iMaxAge 

그래서, 참으로 평가된다.

2

if(iMinAge >= iAge <= iMaxAge) 이것은 C에서 작동하지 않습니다 (어쨌든 의도 한 방식이 아님).
당신은

이이 같이 이루어집니다 [imaxAge, iMinAge] iAge의 범위에있는 경우 테스트하려는 경우 : 왼쪽에서 오른쪽으로 if (iAge >= iMinAge && iAge <= iMaxAge)

0

는 첫째, 관계 연산자의 연관성입니다. 이제

if(iMinAge >= iAge <= iMaxAge) 

실행 연관성에 따라 좌에서 우로 시작 루프 때문에 제 iMinAge가 iAge 이제, 참

0<=iMaxAge 

0 반환하는 평가 => 경우 (1), if 문은 if가 실행되도록합니다.