a+++++b는 왜 에러가 뜰까요?


소스코드

int main ()
{
   int a = 5,b = 2;
   printf("%d",a+++++b);
   return 0;
}

에러내용

error: lvalue required as increment operand

위에 코드는 실행이 안되는데 a++ + ++b같이 쓰면 실행 되잖아요? 무슨 차이가 있는 건가요?

int main ()
{
   int a = 5,b = 2;
   printf("%d",a++ + ++b);
   return 0;
}
  • 2016년 02월 01일에 작성됨

조회수 361


1 답변


좋아요
1
싫어요
채택취소하기

printf("%d",a+++++b);는 Maximal Munch Rule 때문에 (a++)++ + b로 처리됩니다.

후위 증가는 피연산자로 lvalue만을 받을 수 있는데 처음 (a++)의 결과는 lvalue가 아니기 때문에 (a++)++에서 에러가 발생합니다.

  • 2016년 02월 01일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close