책 내용 질문하기
질문이요
도서
2020 시나공 정보처리기사 필기 : NCS 기반 전면 개편 [기본서]
페이지
561,569
조회수
362
작성일
2020-03-12
작성자
탈퇴*원
첨부파일
569에 증감연산자 결합이 <-방향인데 561쪽에는 왜 순서가 오른쪽부터 시작하는거죠?
답변
2020-03-13 09:46:39

안녕하세요 길벗수험서 운영팀입니다.

 

연산식에서의 결합 방향은 동일한 연산자의 연속 사용에서 나타납니다.

 

예를 들어, +의 경우 a+b+c+d  이면 왼쪽부터 (((a+b)+c)+d) 이렇게 수행되죠.

 

단항연산자의 결합규칙이 적용되는 식이 구성되려면 a--++--++ 이렇게 되어있어서, 맨 우측의 ++부터 수행되어 차례대로 1. ++ , 2. --, 3. ++ 4. --   이런 식으로 수행되겠지만, 실질적으로 프로그래밍 언어에서 증감 연산자의 연속사용을 지원하지 않아 이런 상황은 발생하지 않습니다.

 

이런 식은 존재할 수 있겠네요.

 

int a = 1;

a = !a++;

 

이 경우 a=1 로 논리식에서는 true에 해당합니다.

!a++에서 !를 먼저 수행하게 되면, 거짓(false)인 0이 되고 이후 ++을 수행해서 다시 1, true가 되겠지만, 단항 연산자의 결합 규칙에 따라 우측부터 수행되어, a가 먼저 2가 되고 2는 여전히 true에 해당하니 논리 not을 수행하면 0이 되어 a는 결국 0, false가 됩니다. 

 

행복한 하루되세요 :)

  • 관리자
    2020-03-13 09:46:39

    안녕하세요 길벗수험서 운영팀입니다.

     

    연산식에서의 결합 방향은 동일한 연산자의 연속 사용에서 나타납니다.

     

    예를 들어, +의 경우 a+b+c+d  이면 왼쪽부터 (((a+b)+c)+d) 이렇게 수행되죠.

     

    단항연산자의 결합규칙이 적용되는 식이 구성되려면 a--++--++ 이렇게 되어있어서, 맨 우측의 ++부터 수행되어 차례대로 1. ++ , 2. --, 3. ++ 4. --   이런 식으로 수행되겠지만, 실질적으로 프로그래밍 언어에서 증감 연산자의 연속사용을 지원하지 않아 이런 상황은 발생하지 않습니다.

     

    이런 식은 존재할 수 있겠네요.

     

    int a = 1;

    a = !a++;

     

    이 경우 a=1 로 논리식에서는 true에 해당합니다.

    !a++에서 !를 먼저 수행하게 되면, 거짓(false)인 0이 되고 이후 ++을 수행해서 다시 1, true가 되겠지만, 단항 연산자의 결합 규칙에 따라 우측부터 수행되어, a가 먼저 2가 되고 2는 여전히 true에 해당하니 논리 not을 수행하면 0이 되어 a는 결국 0, false가 됩니다. 

     

    행복한 하루되세요 :)

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