연산자의 우선순위에 따른 C언어 코드 계산문제 풀어보았는데,
자료 해설과 디버깅을 살펴보아도 이해가 잘 안갑니다.
초기값부터 시작하여 A , B, C 각 값들의 변화, HAP의 변화 등 구체적이고 상세하게 설명 부탁드립니다.
안녕하세요.
hap += a++ - --b % c
위 수식을 우선순위에 따라 괄호로 묶으면 아래와 같습니다.
hap = hap + (a++ - (--b % c))
----------
①
------------------
②
----------------------------
③
맨 안쪽의 ① 부분부터 계산을 수행합니다.
--b는 전치 연산자로 b값을 우선 --(1감소) 한 후 연산을 수행합니다.
b는 4인데 --(1감소) 하므로 b는 3이 됩니다.
위 수식을 만나기 전에 c++; 에 의해 c는 1이 된 상태이므로
3 % 1 에서 %는 나머지를 구하는 연산자 이므로 3을 1로 나누면, 몫은 3, 나머지는 0이 됩니다.
①은 0 입니다.
② 부분의 계산을 수행하면
a++ - 0
a++은 후치 연산이므로 연산을 먼저 수행한 후 ++(1증가) 합니다.
a는 3이므로
3 - 0 = 3이 됩니다. 연산이 수행됐으므로 a는 ++(1증가)되어 4가 됩니다.
②는 3입니다.
③ 부분의 계산을 수행하면
hap + 3
hap은 0이므로 0+3은 3입니다.
그러므로 hap은 3입니다.
위와 같은 과정으로 c가 4보다 작은 동안 반복을 수행하면 디버깅 표의 내용과 같이 각 변수의 값이 변화되어
최종적으로 hap은 17이 됩니다.
오늘도 즐거운 하루 되세요.
-
*2017-06-05 11:00:16
안녕하세요.
hap += a++ - --b % c
위 수식을 우선순위에 따라 괄호로 묶으면 아래와 같습니다.
hap = hap + (a++ - (--b % c))
----------
①
------------------
②
----------------------------
③
맨 안쪽의 ① 부분부터 계산을 수행합니다.
--b는 전치 연산자로 b값을 우선 --(1감소) 한 후 연산을 수행합니다.
b는 4인데 --(1감소) 하므로 b는 3이 됩니다.
위 수식을 만나기 전에 c++; 에 의해 c는 1이 된 상태이므로
3 % 1 에서 %는 나머지를 구하는 연산자 이므로 3을 1로 나누면, 몫은 3, 나머지는 0이 됩니다.
①은 0 입니다.
② 부분의 계산을 수행하면
a++ - 0
a++은 후치 연산이므로 연산을 먼저 수행한 후 ++(1증가) 합니다.
a는 3이므로
3 - 0 = 3이 됩니다. 연산이 수행됐으므로 a는 ++(1증가)되어 4가 됩니다.
②는 3입니다.
③ 부분의 계산을 수행하면
hap + 3
hap은 0이므로 0+3은 3입니다.
그러므로 hap은 3입니다.
위와 같은 과정으로 c가 4보다 작은 동안 반복을 수행하면 디버깅 표의 내용과 같이 각 변수의 값이 변화되어
최종적으로 hap은 17이 됩니다.
오늘도 즐거운 하루 되세요.