저번에 정수, 실수를 알아보았다.
이제는 문자이다!
C언어에서는 정수 자료형인 char를 이용하여 문자 한 개를 저장한다.
아래에 문자 자료형의 크기와 저장할 수 있는 범위이다.
자료형 | 크기 | 범위 | 비고 |
char signed char |
1바이트, 8비트 | -128 ~ 127 | 문자 저장 |
unsigned char | 1바이트, 8비트 | 0 ~ 255 | 바이트 단위 데이터 저장 |
char에 문자를 저장할 때는 문자 자체를 저장하는 것이 아니라 문자에 해당하는 정숫값을 저장하게 된다.
아래 링크의 사진은 각 정숫값이 어떤 문자에 해당되는지 표로 나타낸 것이며 이 규칙을 아스키(ASCII)코드라고 부른다.
https://namu.wiki/w/%EC%95%84%EC%8A%A4%ED%82%A4%20%EC%BD%94%EB%93%9C
아스키 코드
파일:attachment/1275273992_asciitable.gif 2열 이후의 코드들은 위키에서 사용할 수
namu.wiki
이건 팁인데, ASCII코드에서 65(0x41) ~ 90(0x5A)는 A~Z이고, 97(0x61) ~ 122(0x7A)는 a~z이다.
이걸 왜 적었냐!
코테 연습문제에서 이걸 활용한 것을 많이 보았다.
따라서 알아두면 좋아서 이렇게 적어두었다!
문자는 C언어에서 다음과 같이 ' '(작은 따옴표)로 묶어서 표현한다.
작은 따옴표안에는 문자열을 넣을 수 없다.
char c = 'a'; O
char c = 'abc'; X
예외는 있다. 다음을 살펴보자
unsigned short magic = 'BA';
위 코드는 어떻게 가능할까?
short는 2바이트이기에 가능하다.
알파벳 하나당 1바이트이기때문에 저렇게 2개를 넣을 수 있는 것이다.
더 궁금하면 다음 링크를 참고하라 (링크) -> 비번 42MjUzMj
문자를 출력해보겠다.
#include <stdio.h>
int main(){
char c1 = 'a';
char c2 = 'b';
printf("%c, %d\n", c1, c1);
printf("%c, %d\n", c2, c2);
return 0;
}
실행 결과
a, 97
b, 98
우리는 %c를 사용하면 아스키코드의 문자를 출력하는 것을 알 수 있고, %d를 출력하면 아스키코드 상의 10진수를 출력하는 것을 알 수 있다.
그럼 여기서 궁금점이 생길 것이다.
그럼 97과 97을 c1, c2 에 저장하고 %c로 출력하면 a,b가 나올까?
네 정답입니다.
다른 방법으론 c1과 c2에 16진수를 넣고 %c로 출력해도 문자가 나옵니다.
a와 b의 16진수는 0x61, 062이니 참고하여 직접 코드를 만들어서 출력해보세요.
다음은 문자로 연산을 해보겠습니다.
문자로 연산하기
문자는 ASCII코드 규칙에 따라 정수로 저장되므로 정수처럼 덧셈, 뺄셈 등을 할 수 있습니다.
예시를 보면서 이해해 보겠습니다.
#include <stdio.h>
int main(){
printf("%c %d\n", 'a'+1, 'a'+1);
printf("%c %d\n", 97+1, 97+1);
return 0;
}
실행 결과
b 98
b 98
'a' + 1과 같이 작은따옴표로 묶은 문자는 정수를 더하거나 뺄 수 있습니다.
다음은 상수를 사용하는 법에 대해 알아가보겠습니다.
'프로그램 언어 > C언어' 카테고리의 다른 글
상수 사용하기 (1) | 2024.09.22 |
---|---|
궁금증 해소 1 (0) | 2024.09.20 |
실수 자료형 사용하기 (0) | 2024.09.19 |
정수 자료형 사용하기 (0) | 2024.05.14 |
변수 만들기 (0) | 2024.05.12 |