프로그램 언어/C언어

문자 자료형 사용하기

찬영_00 2024. 9. 20. 18:02

저번에 정수, 실수를 알아보았다.

이제는 문자이다!

 

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