임베디드 개발자로서의 좋은 습관

수업 내용 중요부분 집중 정리!!!

C언어

  • 대입 연산자(=)는 반드시 일치 시키는것이 좋다.

    int 형에 소수를 저장하는 형태를 살펴보자.

    int a=3.5;
    printf("%d",a);
    //실행결과
    3
    

    데이터 누수가 발생한다. int형은 소수부분을 저장하지 않는다. 때문에 0.5의 소수부분이 날라가버린다.

    하지만 double형에 int형을 저장하는것은 가능하다.

    더 큰 자료형에 작은 형을 assign하는것은 문제가 없다 다만 자동 형변환이 일어난다.

  • 강제 형변환 vs 자동 형변환

    • 자동 형변환

      자동 형변환은 더 작은 자료형에서 더큰 자료형으로 assign할때 발생.

      int a=8,b=2;
      double b=a/b;
      printf("%f\n",b);
      //실행결과
      4.000000
      

      우리가 원하는 값은 4였을 터이지만 실제 출력값은 4.000000이 나온다.

      double은 8바이트를 할당하고 지수부분에 11비트 소수부분이 52비트를 저장한다.

      때문에 지수부분 4와 소수부분 52비트 즉 6바이트 0.000000 이기 때문에

      소수점 밑으로 6자리를 표기한다.

    • 강제 형변환

      위와 같은 경우에서 원하는 값인 2로 표기할수도 있다.

      printf("%d",(int)b);
      //실행결과
      4
      

      물론 강제 형변환은 포인터 에서도 많이 쓰인다.

      함수 포인터, byte access 를 참고.


© 2018 Copyright CodexLab. All rights reserved.

Powered by Jekyll, Designed by Codex.