2013-03-03 5 views
2

내 코드는 다음과 같습니다좌변 필요한 오류가 C

여기
#include<stdio.h> 
int main() { 
    int a=10, b; 
    a >= 5 ? b=100 : b=200; 
    printf("%d %d", a, b); 
    return 0; 
} 

는 조건 연산자의 라인에 "좌변 필수"제공됩니다.

당신은 나에게 이유를 설명 할 수 있습니까? 그런데

은, 같은 프로그램은 완벽하게 C++에서 일하고있다.

+3

시도 괄호를 추가. '='우선 순위가 매우 낮습니다. –

+0

예. 그것은 괄호로 작업하고 있지만 ... 오래된 것은 여전히 ​​C++로 작업하고 있습니다. 나는 그저 왜 C에 오류가 있는지 그 이유를 알고 싶었습니다. –

+0

c가 C++가 아니기 때문에? –

답변

7

그 과제를 작성하는 관용적 인 방법은 :이 C++로 작동하는 이유에 대한 자세한 내용은

(a >= 5) ? (b=100) : (b=200); 

을하지만 지역 :

당신이 그것을 당신의 방법을 유지를 주장하는 경우
b = (a >= 5) ? 100 : 200; 

, 괄호를 추가 C, Conditional operator differences between C and C++ (감사합니다 @ Grijesh Chauhan!)

+0

예. 그것은 괄호로 작업하고 있지만 ... 오래된 것은 여전히 ​​C++로 작업하고 있습니다. 그래서 왜 C에 오류가 있습니까? –

+1

@HimanshuAggarwal [** C 및 C++과 조건 연산자 차이 ** (http://stackoverflow.com/questions/1082655/conditional-operator-differences-between-c-and-c) –

+1

@GrijeshChauhan : 편집 링크 감사! 링크에 대한 – NPE

1

괄호는 C에서 우선 순위가 더 높습니다. 우선 순위 문제로 인해 경고가 나타납니다. 이 시도 ..

(a >= 5) ? (b = 100) : (b = 200);