ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 열강 C 2일차
    backup/c,c++ 2009. 12. 11. 19:18
    역시 볼 때마다 뭔가 새로운걸 하나씩 얻게 된다..그래서 조금 지루해도 공부할 맛이 난다..ㅋ

    1. 자료형의 크기
       컴파일러별로 크기가 같은 자료형도 있지만 char, short, int, long은 조금씩 차이가 난다고 한다.
       그 이유는 자료형의 크기가 정해진게 아니라 최소값만 정해져있기 때문이란다.
       즉, ANSI 표준에서 char는 최소 1byte, short와 int는 최소 2byte, long은 최소 4byte가 되어야 한다고 명시하고 있다

    2. sizeof "연산자"
       sizeof가 연산자라는 사실을 머리속에 각인 시킬 수 있었다.. 사실 함수로 알고 있는 사람도 있을 것이다.
       또 sizeof 연산자를 사용할 경우 자료형은 반드시 ( )를 사용하고 그 밖에 변수나 상수는 선택적이라고 한다.
       그냥 간단하게 항상 ( )를 사용하는게 쓰기도 쉽고 보기도 쉽다.

    3. int형 데이터 연산을 가장 빠르게 처리한다.(형 변환을 거치지 않기 때문에)
       크기가 아무리 작아도 정수를 저장할 때는 보통 int형을 사용한다. 크기가 작은 경우 char를 사용하면
       int보다 공간 절약이야 더 되겠지만 처리속도면에서 int가 더 빠르기 때문에 보통 정수에는 int를 사용하는게 좋다.
       char보다 int가 빠른이유는 형 변환 때문이라고 했는데 좀 더 자세히 살펴보면

       char c1 = 10, c2 = 20;
       char c3 = c1 + c2;

       위와 같은 코드를 처리 할 경우를 보자

       우선 c1과 c2를 초기화 하면서 자동 형 변환이 일어난다(자동적으로 문자형 상수는 char, 정수형 상수는 int형으로,
       실수형 상수는 double로 받아들인다) 하지만 크기가 작아서 데이터 손실은 일어나지 않는다.

       둘째, c3를 초기화 하는 과정에서 c1과 c2는 각각 int 형으로 자동형변환이 일어나게된다.
       이와같은 것을 정수의 승격(integral promotion)이라 한단다.

       즉, char, short와 같은 정수형 데이터 연산은 일단 int형 데이터로 자동 형 변환 된 다음에 이뤄진다.
       (int형 연산만 지원하는 이유는 정수형 연산이라는 일 자체를 단일화해서 성능을 향상시키기 위한 것이다)
      
       따라서 int형끼리의 연산은 자동 형 변환이 일어나지 않으므로 char형보다 처리 속도가 더 빠르다.

       단! 그럼 왜 문자는 빠르다는 int를 사용하지 않고 char를 사용하는가?
       int가 char보다 빠른건 뭐! 바로 연산이다. 문자를 가지고 연산(+,-,*,/,...등)을 할 경우가 얼마나 있겠는가?
       또 ASCII코드는 0~127까지 128가지 종류만 있기 때문에 char(1byte)로 모두 표현이 가능하다.

    4. 실수
       float의 정밀도는 소수점 6자리, double의 정밀도는 소수점 15자리이다.
       대게 실수를 사용할 때는 정밀도가 높은 double을 사용한다.

       입력과 출력시 실수형은 %f를 사용한다. 허나 double 입력시는 %lf를 사용해야만 한다.

       실수를 입력받는 경우에 있어서 소수점 이하 자리수가 6자리가 넘지 않으면 %f를 넘어갈 때는 %e를 사용한다.
       여기서 도 주의할 점은 double형에 입력 받을 경우에는 %le를 사용해야 한다.

       %lf와 %le의 차이점은 %lf의 경우는 일반적인 십진법을 이용해서 보여주고
       %le의 경우는 지수를 사용해서 보여준다는것이다.
Designed by Tistory.