C-C++/쉽게 풀어 쓴 C 언어 EXPRESS

[쉽게 풀어 쓴 C 언어 EXPRESS] 4장 정리 & Exercise(이론) 답

최옥구 2023. 1. 9. 07:00
반응형

책의 4장의 전체적인 부분을 요약했습니다. 개인 공부 겸 책으로 공부하시는 분들이 리뷰 느낌으로 한번 더 보시면 좋을 것 같아서 작성하였습니다. 


  • 변수는 메모리에 공간을 할당받는다. 변수가 필요한 이유는 프로그램의 재사용성을 위해서 필요하다. 가령 사각형의 넓이를 구하는 프로그램을 만들었다고 했을 때, 밑변과 높이가 상수로 정해져 있다면 이 프로그램은 하나의 값만 출력하는 필요 없는 프로그램이지만, 변수로 입력을 받는다면 그에 해당하는 넓이를 계산해서 출력할 수 있다.
  • 변수는 프로그램 내에서 언제든지 다른 값으로 변경이 가능한 수이고, 상수는 한번 정하면 변경하지 않는 수이다. 
  • 상수에는 2가지 종류가 있는데, 숫자를 직접 대입하는 리터럴 상수(Literal constant)와 변수처럼 이름을 붙여주는 기호 상수(Symbolioc constant)가 있다. 예) 3.14 * radius * radius / PI * radius * radius
  • 자료형은 3장에서 봤던것 처럼 크기에 따라 여러 종류가 있다. 프로그래머는 자신이 이 변수를 어떻게 쓸 건지에 따라 자료형을 적절하게 선언해야 한다. 그렇게 해야지 자료형의 공간이 부족하거나 잉여 공간이 너무 남아서 프로그램의 낭비가 심해지는 문제를 방지할 수 있다.
  • sizeof() 연산자를 사용하면 자료형의 크기를 직접 출력할 수 있다. 또한 나중에 나오는 배열의 크기도 구할 수 있다.
  • unsigned 수식자는 음수가 아닌 값만 나타낸다는 뜻이다. 자료형의 범위들은 공간을 반으로 나누어서 음의 영역과 양의 영역을 나타내는데 이 수식자가 붙으면 음의 영역을 나타낼 필요가 없어지므로, 모든 공간을 양의 영역으로 옮겨간다. 결론적으로 표현할 수 있는 양수의 범위가 2배가 된다.
  • 오버플로우란, 자료형이 표현할 수 있는 범위를 넘어서서 이상한 값이 출력되는것을 말한다. 가령 정수형 int에 2147483647을 대입하면, -2147483648이 될 것이다. 즉 값이 넘어가서 반대쪽으로 돌아간다. 
  • 기호 상수를 선언하는 방법은 #define을 사용하거나, const int 와 같은 형식으로 작성하면 된다.
  • 언더플로우는 오버플로우의 반대 상황으로 부동소수점이 너무 작아서 표현하기 힘든 상황을 말한다.

1. 다음의 식별자 중에서 잘못된 것은?  - 3번 첫시작을 숫자로 할 수 없다.

 

2. 다음 자료형을 최댓값이 작은 것부터 나열하라. - char - unsigned char - short - int - long - float - double

 

3. 다음 중 C에서 지원하는 자료형의 이름이 아닌 것은? - 3번 byte는 지원하지 않습니다.

 

4. 다음 중 정수 상수의 표기가 잘못된 것을 모두 골라보자. - 2번 5번 / 1번은 16진수, 3번은 8진수, 4번은 20의 long형을 뜻하고, 5번의 1000 단위 반점은 프로그램에서 사용하지 않습니다.

 

5. 다음 중 실수 상수의 표기가 잘못된 것을 모두 골라보자. - 3번

 

6. 다음 중 문자 상수의 표기가 잘못된 것을 모두 골라보자. - 2번 4번 / 2번은 문자열인데, 문자 ' '로 되어있습니다. 4번도 같은 이유입니다.

 

7. 다음의 정수 상수 표기가 잘못된 것을 모두 골라보자. - 4번 / 1 ~ 3번 모두 10을 뜻하는 10진수 16진수 8진수입니다.

 

8. 다음의 상수의 자료형을 적어보자. - (A) int, (B) double, (C) float, (D) int(16진수), (E) char

 

9. 다음 변수 이름이 올바른지 아니면 잘못되었는질을 지적하고 그 이유를 써라. - (A) O, (B) #과 같은 특수기호 들어갈 수 없음, (C) 첫 글자는 숫자로 할 수 없음, (D) % 와 같은 문자 들어갈 수 없음

 

10. 다음의 상수를 지수표기법으로 변환하라. - (A) 3.141582e+00 (B) 7.165320e+02

 

11. 부동 소수점형에 대한 설명 중 잘못된 것을 모두 골라보자. - 1번 3번 5번 / 정수형보다 계산이 느립니다. 오버플로우도 충분히 발생할 수 있습니다. float는 32비트입니다. (double은 64비트)

 

12. 다음의 변수를 선언하는 문장 중에서 틀린 것을 모두 골라보자 - 2번 6번 / 자료형이 달라지면 이어서 선언을 하지 못합니다. 따라서 10 옆에 세미콜론을 써야 합니다. short double은 이상한 혼종입니다. long double은 있습니다.

 

13. 다음의 상수를 printf()를 이용해서 출력하는 경우의 올바른 형식 지정자를 쓰라. - (A) %e, (B) % x, (C) % c, (D) % f

 

14. float f = 1.234; 문장을 컴파일하면 경고 메시지가 발생하는 이유는 무엇인가? - float로 자료형을 써도 double형으로 인식하기 때문에 상수 옆에 f를 붙여주어야 float 형이 됩니다.

 

15. 다음의 코드에서 잘못된 부분을 모두 지적하고 올바르게 수정하라.

#include <stdio.h>

int main(void)
{
	int x, y = 0;	// int x = 0, y = 0;
    char grade = "A";	// char grade = 'A';
    double rate = e10;	// double rate = 1.0e10;
    short double profit = 75.0;	// double profit = 75.0;
    int salary = 2,000,000;	//	int salary = 2000000;
}

 

16. 다음 프로그램의 출력을 쓰라.

(A) 012                     (B) 경고음

       10                              예제       프로그램

       0xa                            100 , x, 1.2345

 

반응형