개발/C

[C언어] 자료형 분류, getchar, putchar

섭교수 2022. 5. 25. 22:37
반응형

#C언어

C언어에서 자료형의 분류는 다음과 같습니다.

 

 

 

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