책 내용 질문하기
문제4번
도서
2017 시나공 정보처리기사 실기(산업기사 포함) 특별개정판
페이지
101
조회수
93
작성일
2017-04-04
작성자
첨부파일

해당 문제의 가장 마지막부분 결과도출에서

myvar.a += myvar.b -= myvar.c *= 10;

이부분에서

*= 계산 먼저후 후치계산부터 하는게 아니라

myvar.a += myvar.b 계산 후에 myvar.b -=myvar.c를 계산하는 것이 아닌가요?

c 자료형에서 +- 순으로 알고있는데 혹시 java에서는 다른것인가요?

왜 결과가 20 -90 100이 아니라 -80 -90 100인거죠..?

답변
2017-04-05 10:20:06

안녕하세요.

a += b는 a = a + b입니다. 즉 a에 b를 누적하는 것이죠.

같은 원리로

myvar.a += myvar.b -= myvar.c *= 10;

myvar.a 에 그 이후의 값을 누적하는 것입니다.

myvar.a += myvar.a + (myvar.b -= myvar.c *= 10);

그런데 그 이후도 같은 원리가 적용되기에

myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c *= 10 ));

myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c = myvar.c *10 ));

이 되어 연산자 우선순위의 개념이 아니라 연산 순서에 의해 가장 뒤에서부터 계산된 결과가 앞쪽 변수에 누적되는 개념으로

처리되어야 합니다.

오늘도 즐거운 하루 되세요.

  • *
    2017-04-05 10:20:06

    안녕하세요.

    a += b는 a = a + b입니다. 즉 a에 b를 누적하는 것이죠.

    같은 원리로

    myvar.a += myvar.b -= myvar.c *= 10;

    myvar.a 에 그 이후의 값을 누적하는 것입니다.

    myvar.a += myvar.a + (myvar.b -= myvar.c *= 10);

    그런데 그 이후도 같은 원리가 적용되기에

    myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c *= 10 ));

    myvar.a += myvar.a + (myvar.b = myvar.b - ( myvar.c = myvar.c *10 ));

    이 되어 연산자 우선순위의 개념이 아니라 연산 순서에 의해 가장 뒤에서부터 계산된 결과가 앞쪽 변수에 누적되는 개념으로

    처리되어야 합니다.

    오늘도 즐거운 하루 되세요.

· 5MB 이하의 zip, 문서, 이미지 파일만 가능합니다.
· 폭언, 욕설, 비방 등은 관리자에 의해 경고없이 삭제됩니다.