259페이지 29번 문제에서 마지막에
for (int i = 0; i < 5; i++, p *= i);
이렇게 나와있는데 i++가 후치연산이라 연산이 다 끝난다음 +1을 해줘야된다고
알고있었는데 제가 해설 이해를 잘 못한건지 바로 +1을 해준것 같아서 문의남겨요
혹시 i++일때와 ++i때 정답이 달라질까요?
252페이지 12번 문제같은경우는
k++여서 k에 20먼저 대입하고 나중에 +1을하기때문에
result=20이다라고 이해를 했는데
어떻게생각해야 정확히 이해하고 넘어갈까요?
안녕하세요 길벗수험서 운영팀입니다.
[259쪽 29번]
전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다. 즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐, 위와 같이 개별로 사용될 때는 그저 1을 증가시키는 역할 외에 다른 역할을 수행하지 못합니다.
즉, i++과 p*=i는 쉼표로 구분되어 있어 i++이 ++i로 바뀌든지 관계 없이 그저 1을 증가시키는 i=i+1과 동일합니다.
[252쪽 12번]
3항연산자(조건?참:거짓)은 3개로 구분되어 있는 것 같으나, 이것은 연산 후의 식을 기준으로 해야 합니다.
즉, j<k가 참인 경우 result=k++; 이라는 식으로
j<k가 거짓이면 경우 result=--L; 이라는 식으로 인식하고 전치 후치 연산을 풀어내야죠.
이렇게 풀어냈을 때 위의 두 식은 하나의 식에 해당하므로 전치 후치를 적용하여 풀어내면 되겠습니다.
행복한 하루되세요 :)
-
관리자2023-09-25 16:45:48
안녕하세요 길벗수험서 운영팀입니다.
[259쪽 29번]
전치/후치 증감 연산자가 식에 영향을 주는 것은 '하나의 식' 안에서 뿐입니다. 즉, sum = sum + i++; 과 같이 세미콜론(;) 또는 쉼표(,)로 구분되는 각 식 내에서만 전/후가 의미가 있을 뿐, 위와 같이 개별로 사용될 때는 그저 1을 증가시키는 역할 외에 다른 역할을 수행하지 못합니다.
즉, i++과 p*=i는 쉼표로 구분되어 있어 i++이 ++i로 바뀌든지 관계 없이 그저 1을 증가시키는 i=i+1과 동일합니다.
[252쪽 12번]
3항연산자(조건?참:거짓)은 3개로 구분되어 있는 것 같으나, 이것은 연산 후의 식을 기준으로 해야 합니다.
즉, j<k가 참인 경우 result=k++; 이라는 식으로
j<k가 거짓이면 경우 result=--L; 이라는 식으로 인식하고 전치 후치 연산을 풀어내야죠.
이렇게 풀어냈을 때 위의 두 식은 하나의 식에 해당하므로 전치 후치를 적용하여 풀어내면 되겠습니다.
행복한 하루되세요 :)