1. 정수형 (Integer Types)
정수형에는 int, short, long 이 있으며 아래와 같이 선언이 가능힙니다.
int a;
short a,b;
long a=1, b, c=3;
int 는 32비트에 해당하는 수까지 저장할 수 있으며 long은 그보다 더 큰 정수를, short는 더 작은 범위의 정수를 저장할 수 있습니다.
unsigned 는 부호를 표시하지 않는 정수를 지칭하며 부호에 사용되는 비트 1개를 숫자 저장에 사용할 수 있기 때문에 signed(일반적인 int) int보다 통상 2배의 범위를 가집니다.
2. 실수형 (Floating Types)
실수형에는 float, double, long double 선언이 가능합니다.
정확도가 두 배씩 뛴다고 생각하면 되는데 long double은 거의 안쓰인다고 합니다.
또한 실수형의 경우 exponential 기호를 사용할 수 있습니다.
ex) 57.0를 표현하는 방법
57.0
57.
57.0e0
57E0
5.7e1
5.7e+1
.57e2
570.e-1
+- 부호가 없으면 지수가 양수로 입력됩니다.
또한 실수임을 구체화시킬 때는 f나 F, long double인 경우 L이나 l을 수 뒤에 이어붙입니다.
ex) 57.0f, 57.0L
3. 문자형(Charater Types)
문자형 char는 오직 하나의 문자(알파벳, 특수기호 또는 한 자리 숫자)만을 저장할 수 있습니다.
char 선언은 다음과 같이 작은 따옴표를 사용합니다.(큰 따옴표X)
ch = 'a';
ch = 'A';
ch = '0';
ch = ' ';
ch = '\n';
마지막줄 같이 \n나 \t 등 이스케이프 시퀀스(escape squence)를 사용할 수 있습니다.
char set은 ASCII (아스키코드)를 사용하며 아스키 코드 표는 다음과 같습니다.
char은 특수하게 int와 연동이 됩니다.
int a = 113;
printf("%c", a);
위 코드 실행시 출력되는 결과는 q 입니다.
위 아스키 코드 표에서 10진 113에 대응하는 문자가 q라서 위와 같은 결과가 나옵니다.
거꾸로 char a = 'q'; printf("%d", a); 를 입력하면 113이 나옵니다.
아래 코드는 문자를 입력하면 ch에 한 글자씩 저장(갱신)되며 엔터를 입력하면 멈추는 코드입니다.(마지막 저장된 ch는 \n)
char ch;
do {
scanf("%c", &ch);
while (ch != '\n');
}
4. getchar, putchar
문자 입출력함수인데, scanf로도 대부분의 자료형을 입력받을 수 있지만 문자의 경우 보다 편한 함수를 사용할 수가 있습니다.
다음과 같이 사용할 수 있으며 getchar는 scanf에, putchar는 printf에 대응됩니다.
char ch;
ch = getchar();
putchar(ch);
입력 자체는 여러 문자를 할 수 있지만 가장 처음 입력된 문자가 저장됩니다.
ex) aab 엔터를 치면 a가 저장됩니다.
do {
ch = getchar();
} while (ch != '\n');
앞서 살펴본 do 문과 완전히 동일한 기능을 수행합니다.
5. 입력한 문자열의 길이 구하는 예제
/* Determines the length of a message */
int main(void)
{
char ch;
int len = 0;
printf("Enter a message: ");
ch = getchar();
while (ch != '\n') {
len++;
ch = getchar();
}
printf("Your message was %d character(s) long.\n", len);
return 0;
}
'개발 > C' 카테고리의 다른 글
[C언어] 다차원 배열(Multidimensional Array) (0) | 2022.05.30 |
---|---|
[C언어] 배열(array), sizeof (0) | 2022.05.28 |
[C언어] if, else, else if, switch, break (2) | 2022.05.07 |
[C언어] 반복문 (while, do, for) (0) | 2022.05.05 |
[C언어] printf, scanf (0) | 2022.05.03 |