자료형과 문자열
정수 자료형
변수
데이터를 저장하는 메모리의 한 공간이며 데이터 종류에 따라 다양한 형태를 사용한다.
자료형 (데이터형)
변수의 형태
데이터 종류에 따른 대표 자료형
#include <stdio.h>
int main(void)
{
char ch1 = 'A';
char ch2 = 65;
printf("문자%c의 아스키 코드 값 : %d\n", ch1, ch1);
printf("문자%d의 아스키 코드 값 : %c\n", ch2, ch2);
return 0;
}
==> 디버깅 창에서 보듯이 'A'나 65나 컴퓨터는 아스키 코드 값으로 해석하기 때문에 같은 값이 된다.
언제 어떤 자료형이 사용할지 고민할 때
1. 특별한 경우가 아니면 정수형은 int를 사용한다. ( 가장 빠르게 연산된다 )
2. long형은 큰 값을 저장할 때 사용한다.
size of 연산자
자료형의 크기를 알 수 있다
unsigned 정수 자료형
- 정수형은 보통 양수와 음수를 저장하지만, 양수만을 저장하면 두 배 더 넓은 범위의 값을 저장할 수 있다. ( unsigned )
- 음수가 없는 데이터를 저장할 때는 unsigned를 사용한다
- unsigned가 없으면 자동으로 signed로 선언된다.
#include <stdio.h>
int main(void)
{
unsigned int a;
a = 4294967295;
printf("%d\n", a);
a = -1;
printf("%u\n", a);
return 0;
}
%d
부호까지 생각해서 10진수로 출력하는 변환 문자
%u
부호 없는 10진수로 출력하는 변환 문자
4294967295 와 -1 는 메모리에 저장되는 형태가 같다. ( 위에 표를 보면 unsigned int 의 범위가 0 ~ 4294967295인 것을 알 수 있다 ) 그래서 같은 값이 %d로 출력하면 -1이 나오고 %u로 출력하면 4294967295로 나오는 것이다.
==> 따라서 unsigned 자료형을 사용할 때는 변환 문자 %u를 사용하는 것을 추천한다.
실수 자료형
실수
데이터를 구현하는 방법이 정수와 다르므로 별도의 자료형을 사용한다.
#include <stdio.h>
int main(void)
{
float ft = 1.2222222222222;
double db = 2.44444444444444;
printf("float형 변수의 값 : %.20f\n", ft);
printf("double형 변수의 값 : %.20lf\n", db);
return 0;
}
- 콘솔창에서 보는 것처럼 출력한 값이 초깃값과 다르다.
- 이렇게 다른 이유는 컴퓨터에서 실수를 표현하는 방식에서 오차를 갖고 있기 때문이다.
- 따라서 float형은 유효 숫자 7자리, double형은 15자리의 범위 내의 값을 사용하는 것이 좋다
프로그래밍할 때의 방법
1. 정수형을 기본으로 사용하고 실수형은 꼭 필요한 경우만 사용한다.
2. 실수형은 유효 숫자가 많은 double 형을 기본으로 사용한다.
문자열 저장
char 배열명[문자열길이 + 1] = 문자열;
char fruit[6] = "apple";
문자열의 길이보다 배열의 크기를 하나 더 크게 잡아야하는 이유
==> 컴파일러가 문자열의 끝에 \0 (널 문자)를 자동으로 추가하기 때문이다.
\o (널 문자)
==> 문자열의 끝을 표시하는 특별한 문자
#include <stdio.h>
int main(void)
{
char fruit[20] = "strawberry";
//strawberry가 10자이므로 배열의 크기는 11 이상이어야 한다. 여기선 20으로 지정
printf("딸기 : %s\n", fruit);
printf("딸기잼 : %s %s\n", fruit, "jam");
return 0;
}
char 배열에 새로운 문자열을 저장하려면 strcpy 함수를 사용하면 된다.
#include <stdio.h>
int main(void)
{
char fruit[20] = "strawberry";
printf("딸기 : %s\n", fruit);
strcpy(fruit, "banana");
printf("바나나 : %s\n", fruit);
return 0;
}
const를 사용한 변수
변수를 선언할 때 앞에 const를 붙이면 초기화된 값을 바꿀 수 없다.
const 자료형 변수명 = 값;
const double tax_rate = 0.12;
const는 반드시 선언과 동시에 초기화해야 한다
==> 초기화하지 않으면 변수의 쓰레기 값이 계속 사용되기 때문이다
예약어와 식별자
예약어
컴파일러와 사용 방법이 약속된 단어 ex) int, double
식별자
필요에 따라 만들어 사용하는 단어 ex) age, name
식별자를 만들때의 규칙
- 알파벳 대문자 A~Z, 소문자 a~z, 숫자 0~9, _(밑줄, underline)로 만든다
- 숫자로 시작할 수 없다
- 대문자와 소문자는 서로 다른 식별자로 인식한다
- 예약어는 식별자로 사용할 수 없다
'C 언어 > [책 정리] 혼자 공부하는 C언어' 카테고리의 다른 글
산술 연산자, 관계 연산자, 논리 연산자 (1) (0) | 2022.12.01 |
---|---|
데이터 입력 (0) | 2022.11.29 |
변수 (1) (0) | 2022.11.29 |
상수와 데이터 표현 방법 (2) (0) | 2022.11.25 |
상수와 데이터 표현 방법 (1) (0) | 2022.11.25 |