본문/내용
변환명세 및 연산 이해
1. 170page 4번문제> 두 수를 곱하는 매크로MULT(x,y)를 정의하여 다음과 같은 문장이 실행되도록 프로그램을 작성하시오.
result = MULT(10, 10);
#include
#define MULT(x, y) (x)*(y)
int main(void)
{
printf("3과 29의 곱은 %d입니다.\n", MULT(3, 29));
return 0;
}
결 과
3과 29의 곱은 87입니다.
Press any key to continue
위의 소스와 같이 #define 명령을 통해 MULT라는 이름으로 변환명세를 만들어서 두 수의 곱셈이 가능함을 알 수 있습니다.
2. 변수 a,b,c,d가 각각 5, 10, 15, 20인 경우, 다음 연산식의 결과는 무엇인가?
A. a + ++b
결과 : 16
설명 : prefix이므로 b값에 1이 증가한 값과 a의 값이 적용된다.
B. a && 0
결과 : 0
설명 : a가 0이 아닌 5의 값이므로 참이며 &&는 모두 참이어야 참(1)이 출력되는데 그렇지 않으므로 거짓(0)이 출력
C. b + c % a
결과 : 10
설명 : b(10)에 c(15)를 a(5)로 나눈 나머지 즉, 0을 더해준 값이 출력
D. c / d
결과 : 0.750000
설명 : c 나누기 d 이므로 변수형을 float로 잡아줘서 실행시켜보면 결과가 출력됨(만일 정수형으로 결과를 보면 0)
E. d - c--
결과 : 5
설명 : d(20) 빼기 c(15) 가 된다. c++는 postfix이므로 15값이 빼진다.
F. a%4 + b + d/b
…
G. d - a + c%8
H. (b > c) - d
I. (b != 10) && (c >= d)
J. a + b++ - --d
결과 : -4
설명 : a(5)에 b값(postfix이므로 b값(10) 그대로)을 더하고 d에서 1이 감소한 값(19, prefix이므로)를 빼준 결과값