C언어 기본 (1)

라이라·2023년 6월 22일
0

정수는 %d, 실수는 %lf를 이용하여 출력하고 실수는 기본값이 소숫점 이하 6가지까지 출력한다.

printf("%d", 3) // 3
printf("%lf", 3.4) // 3.400000
printf("%.1lf, 3.4) // 3.4

지수표현

0.0000314 == 3.14e-5
0.00000314e1 == 0.0314e-3 == 314e-7

문자, 문자열

문자 상수 :: 'A', %c
문자열 상수 :: "A", %s

  • 따옴표 개수가 문자와 문자열을 구분짓는다.
  • 문자를 출력할 때는 %c 변환 문자열을 사용한다.
  • 문자열은 변환문자열 없이 바로 출력할 수 있으나 필요한 경우 %s를 사용한다.
  • %c를 사용하면 문자를 출력하고 %d를 사용하면 아스키 코드값을 출력한다.

정수는 컴파일되면 4byte 크기의 2진수로 변환된다.

  • 10진수 13 // 0000 0000 0000 0000 0000 0000 0000 1101
  • 1값을 갖는 비트가 왼쪽에 위치할 수록 값이 크다.
  • 1000 0000 (십진수 128) > 0111 1111 (127)
  • 전체 값에서 가장 비중이 큰 왼쪽에 위치판 비트는 MSB (Most Significant Bit)라고 한다.
  • 가장 오른쪽에 위치한 비트는 LSB (Least Significant Bit)라고 한다.
  • 1바이트(8비트)로 표현할 수 있는 값의 범위는 0~255
  • 0~2^비트수 -1
    • 4바이트로 표현할 수 있는 정수의 최대값은 2^32-1로 4294967295이며 이보다 큰 상수를 사용하면 컴파일러는 자동으로 데이터의 크기를 8바이트로 늘려 처리한다.
    • 만약 값의 크기와 상관없이 데이터의 크기를 8바이트로 만들고 싶다면 정수에 접미사LL(소문자ll)을 붙여 사용한다.

unsigned

  • 정수형을 양수 전용으로 쓰고 싶을 때는 unsigned를 사용한다. (default = signed)
	unsinged int a;
    a= 4294967295;
    printf("%d\n", a); // -1
    a = -1;
    printf("%u\n", a); // 4294967295

unsigned 자료형은 항상 양수만 저장하고 %u로 출력한다.

문자열

  • 문자열은 char형을 배열 형태로 만들어 저장하고 선언할 때 숫자는 문자열의 길이보다 1 이상 크게 잡아야한다.

    char fruit[6] = "apple"

int scanf(const char *format, ...)

  • 변수의 형태에 맞는 변환문자를 사용하고 입력할 변수 앞에 &를 붙인다.

    scanf("%d", &a)

  • scanf 함수는 변환문자와 입력 형태가 다르면 데이터를 입력하지 못할 수 있다.
    :: 키보드로부터 타이핑하는 데이터는 모두 문자로 처리되는데 scanf 함수는 이 문자들을 연산가능한 문자로 변환하여 변수에 저장한다.
    만약 변환문자와 다른 예상치 못한 데이터가 입력되면 변환을 포기하고 실행을 중단해버린다. (물론 그 이후의 프로그램은 진행됨)

  • 문자열을 입력할 때에는 배열명에 &기호를 붙이지 않는다.

    char grade;
    scanf("%c", &grade);
    char name[20];
    scanf("%s", name);
    이 경우 배열의 크기보다 큰 문자열을 입력하면 프로그램의 비정상 종료가 이루어질 수 있다.

  • char형 변수에 입력할 때 %d 변환문자를 사용할 수 없다.

double형은 저장공간이 크고 연산속도가 느리며 무엇보다 오차가 발생하므로 기본적으로 int형을 사용하고 필요할 때만 double형으로 형변환하여 결과를 받아오는 것이 좋다.

profile
혼자 보려고 올리는 용도

0개의 댓글