작성
·
221
0
package chap_04;
public class _11_Continue {
public static void main(String[] args) {
int max = 20; // 최대 음료 판매 수량
int sold = 0; // 현재 음료 판매 수량
int noShow = 17; // 대기번호 17번 손님이 노쇼
for(int i = 0; i <= 50; i++) {
System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");
sold++;
System.out.println(sold); // ++sold, sold++ 값이 같게 출력됨???
if(sold == max) {
System.out.println("금일 재료가 모두 소진되었습니다.");
break;
}
}
System.out.println("금일 영업을 종료합니다.");
}
}
안녕하세요!
증감 연산자 관련하여 질문 드립니다.
강의에서 sold++ 후위 연산자를 사용하셨는데요.
"System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");" 다음에
현재 음료 판매 수량을 증가시키기 위해 전위 연산자 ++sold 를 사용해야 된다고 생각했었는데요.
강사님께서는 왜 전위 연산자인를 사용하지 않고 후위 연산자를 사용하셨는지 이유가 궁금합니다.
"System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");" 다음에
++sold 를 입력해도 결과 값이 같게 나오던데,
왜 전위 연산자와 후위 연산자 결과 값이 동일하게 출력되는지 이유를 모르겠습니다. 😢
답변 1
0
안녕하세요?
먼저 전위 연산자와 후위 연산자를 한 번 비교하고 넘어가겠습니다.
전위 연산자는 연산을 먼저 합니다. 그래서 다음과 같이 문장을 작성하게 되면 0 이었던 i 의 값을 증가시켜서 1 로 만든 뒤에 출력하므로 출력결과는 1 이 됩니다.
int i = 0;
System.out.println(++i); // 1
후위 연산자는 연산을 나중에 합니다. 그래서 다음과 같이 문장을 작성하게 되면 0 이었던 i 의 값을 출력하고 나서 1 로 만들게 되므로 출력결과는 0 이 됩니다.
int i = 0;
System.out.println(i++); // 0
그런데 다음과 같이 문장을 작성하면 어떻게 될까요?
int i = 0;
++i;
System.out.println(i); // 1
두 번째 문장에서 연산을 먼저 수행하므로 i 는 1 이 됩니다. 그런 다음에 세 번째 문장에서 i 를 출력하므로 출력결과는 1 이 되겠네요.
후위 연산자는 어떨까요?
int i = 0;
i++;
System.out.println(i); // 1
두 번째 문장에서 연산을 나중에 수행하는데 세 번째 문장을 실행하는 시점에서는 i 가 이미 증가되어 있는 상태죠. 그래서 동일하게 1 이 출력되는 것입니다.
전위 연산이건 후위 연산이건 다음 문장으로 넘어가는 시점에서는 둘 다 1씩 증가되어 있는 것은 동일합니다. 그래서 예제에서처럼 sold++; 를 해도, ++sold; 를 해도 모두 동일한 결과가 나오게 되는 것이구요. 만약 sold 를 더하는 연산을 System.out.println() 내에 직접 넣고자 한다면 전위 연산을 해야 합니다.
int i = 0;
int sold = 0;
System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");
// sold++; // 문장 삭제
System.out.println(++sold); // 판매량 i 를 1 증가시킨 후 출력 (출력 결과 : 1)
이렇게 하지 않고 후위 연산을 하게 된다면 원치 않는 결과가 나오게 되지요.
int i = 0;
int sold = 0;
System.out.println(i + "번 손님, 주문하신 음료 나왔습니다.");
// sold++; // 문장 삭제
System.out.println(sold++); // 판매량 i 를 출력한 뒤 1 증가 (출력 결과 : 0)
전위, 후위 연산은 처음 배우면 많이 헷갈리게 마련입니다. 설명을 천천히 읽어보시고 여전히 모호한 부분이 있다면 다시 질문 남겨주시면 도움 드리겠습니다 😊
감사합니다.