안녕하세요.
1. 연산자 부분을 학습 하다가 이해가 어려운 부분이 있어서 질문 드립니다.
39쪽의 문제 6번에서 ++a%b++ 부분에서 b++은 후치 연산자이기 때문에, ++a%b++을 계산할 때에는 b가 2이고, 이 계산이 끝난 후에는 b가 3이 되는 것으로 이해했습니다. 그래서 마지막의 b/c는 3/3이 되는 것이지요.
그런데, 41쪽의 문제 2번에서 ++a*c-- 부분에서도 c--는 후치 연산자이기 때문에, ++a*c--를 계산할 때에는 c가 5이고, 이 계산이 끝난 후에는 c가 4가 되어야 하는 것이 아닌가요?
그렇게 c가 4가 되어서 교재에서 기재하고 있는 7번 부분이 4-3=1 로 1이 되어야하는 것이 아닌가요?
해당 부분들의 유튜브 강의를 찾아보았지만, 후치 연산자를 정확히 어느 시점에서 적용하는지에 대한 설명은 부족하다고 생각되어 이 쪽으로 문의 납깁니다.
2. 단원 끝 부분의 기출문제들을 풀다보면 종종 '아스키 코드' 라는 것이 등장합니다. 교재에는 아스키 코드에 대한 설명이 자세하게 적혀있지 않지만, 아스키 코드를 모르면 해결할 수 없는 문제들이 몇 있더라고요. 이 아스키 코드는 따로 암기가 필요한 부분일까요?
답변 기다리겠습니다.
감사합니다.
안녕하세요 길벗수험서 운영팀입니다.
C언어에서 단항 증감연산자는 하나의 식 내에서 공통 적용됩니다.
a = 2;
sum = ++a + ++a + a++; 이라는 식이 있다면, 4+4+4라는 결과가 sum에 저장되죠.
만약,
sum = a++ + a++ + a++; 이라는 식이 있더라도, 2+2+2의 결과가 sum에 저장된 후 해당 식이 종료된 후에나 a의 값이 후치증가연산 3번이 중첩되면서 a가 5로 증가하게 될 것입니다.
여기서 주의할 점은 '하나의 식'이라는 개념입니다.
조건 연산자(조건 ? 참 : 거짓)나 순서 연산자(, 또는 ;)는 2개 이상의 식이 포함되는 형태입니다.
40쪽의 6번의 경우 ++a % b++이 하나의 식이 되어 b++의 후치 증감연산자가 적용된 후에 b/3가 수행되게 되죠.
이 점이 충분히 설명되지 않아 이해하시는 데 어려움을 드린 듯 합니다.
------------------------
아뇨, 아스키 코드는 단순히
1. 컴퓨터가 문자를 메모리에 저장하는데, 메모리라는 곳은 문자를 직접 저장할 수 없어서 숫자 코드로 저장한다.
2. 이 때 사용되는 숫자 코드가 아스키 코드다.
3. 때문에 하나의 문자는 숫자와 다름없다.
라고 보시면 됩니다.
char 자료형이 문자형인 동시에 정수형인 것도 이런 이유 때문이며,
문자를 +1 했을 때 다음 문자를 가리킬 수 있는 것도 마찬가지입니다.
종종 아스키 코드 65가 'A'다 라는 식의 지식이 있어야 풀 수 있는 문제가 등장할 수 있지만, 보통 이런 문제의 경우 문제 자체에서 아스키 코드의 값을 미리 알려주는 단서가 제시됩니다.
('<처리 조건> 문자 A는 아스키 코드로 숫자 65이다.' 요런 식으로)
행복한 하루되세요 :)
-
관리자2022-12-08 10:03:37
안녕하세요 길벗수험서 운영팀입니다.
C언어에서 단항 증감연산자는 하나의 식 내에서 공통 적용됩니다.
a = 2;
sum = ++a + ++a + a++; 이라는 식이 있다면, 4+4+4라는 결과가 sum에 저장되죠.
만약,
sum = a++ + a++ + a++; 이라는 식이 있더라도, 2+2+2의 결과가 sum에 저장된 후 해당 식이 종료된 후에나 a의 값이 후치증가연산 3번이 중첩되면서 a가 5로 증가하게 될 것입니다.
여기서 주의할 점은 '하나의 식'이라는 개념입니다.
조건 연산자(조건 ? 참 : 거짓)나 순서 연산자(, 또는 ;)는 2개 이상의 식이 포함되는 형태입니다.
40쪽의 6번의 경우 ++a % b++이 하나의 식이 되어 b++의 후치 증감연산자가 적용된 후에 b/3가 수행되게 되죠.
이 점이 충분히 설명되지 않아 이해하시는 데 어려움을 드린 듯 합니다.
------------------------
아뇨, 아스키 코드는 단순히
1. 컴퓨터가 문자를 메모리에 저장하는데, 메모리라는 곳은 문자를 직접 저장할 수 없어서 숫자 코드로 저장한다.
2. 이 때 사용되는 숫자 코드가 아스키 코드다.
3. 때문에 하나의 문자는 숫자와 다름없다.
라고 보시면 됩니다.
char 자료형이 문자형인 동시에 정수형인 것도 이런 이유 때문이며,
문자를 +1 했을 때 다음 문자를 가리킬 수 있는 것도 마찬가지입니다.
종종 아스키 코드 65가 'A'다 라는 식의 지식이 있어야 풀 수 있는 문제가 등장할 수 있지만, 보통 이런 문제의 경우 문제 자체에서 아스키 코드의 값을 미리 알려주는 단서가 제시됩니다.
('<처리 조건> 문자 A는 아스키 코드로 숫자 65이다.' 요런 식으로)
행복한 하루되세요 :)