2014-12-30 2 views
-6

나는이 코드를 가지고 잠시 나를 괴롭 히고있다. 7 행의 표현은 나를 괴롭 히고있다. 0 또는 -1을주고 있습니까? 그 공은 대답이 다른 대답은 4이 코드에 대한 답변을 알려주십시오.

/* 라인에 C의 값을 찾는 방법 7 표현 */

C에서
#include<stdio.h> 

int main() 
    { 
    int a,b,c=1; 
    a=b=c;       // a,b,c have equal value 
    c=b+=a=-c;      // what will be the output of this expression? 
    c=-c; 
    c=(++c)*2;      
    printf(“%d”,c); 
    return 0; 
    } 
+2

여기서'컴파일러는 에러를 낸다'와'..... then then answer is 2 else answer is 4'입니다. 방법? –

+2

이해할 수없는 코드 작성을 중지하십시오. 한 번에 한 가지만 수행하면 틀리게 돌아 가지 않습니다. –

+2

또한 이와 같이 더 많은 코드를 작성하는 경우 친구가 없습니다. – Maroun

답변

2

사전 증가 (감소)와 포스트 인 경우 증분 (감소) 연산자는 피연산자로 L 값 표현식을 요구합니다. R 값 또는 const 한정 변수를 제공하면 컴파일 오류가 발생합니다.

왼쪽 값은 할당 할 수있는 값입니다.

+0

으로 실행하지만 c는 lvalue이고 코드에서 주어진 것 –

+0

'c'는 lvalue에서 중괄호'++ (- c)'즉'-c'은 그렇지 않습니다 - 그것은 어떤 상수 값으로 평가됩니다. – Sadique

+0

그래서 lvalue 에러를 피하기 위해 어떻게 이것을 쓸 수 있습니까? –

2

/* C의 값이 무엇인지 */

답변을 쉽게

: 귀하의 질문이 이해가되지 않습니다.

코드가 컴파일되지 않으므로 c에는 "값"이 없습니다.

+0

그래, 나는주는 오류가 있음을 안다. 그 이유는 두 가지를 알고 싶습니다. 1. 왜 lvalue 오류입니까? 2. 7 행의 c 출력 () C : b = = a = -c; –

+1

질문 : 왜 컴파일이 실패합니까? ? 그리고 아닙니다 : C의 가치는 무엇입니까? –

관련 문제