아는 사람이 좀 물어봤는데, 처음 c언어 배우면 물어보는 사람들이 많은 것 같아서 겸사겸사 내 블로그에 남겨본다.
signed이면 d, unsigned이면 u라고 생각하면 됩니다.
그니까
int a; => scanf("%d", &a); 이고
unsigned int a; => scanf("%u", &a); 인거죠
여기에 앞에 접두사만 붙어요
char이면 hh
short이면 h
long 이면 l
long long이면 ll
그니까
unsigned char를 받는다고 하면 scanf("%hhu", &a); 가 되겠죠
그런데 char는 scanf("%c", &a);꼴로 받는다고 알고 계실거에요.
그러니까 저렇게 받는거는 저기에 3을 입력하면 '3'이라는 아스키코드값 51이 들어가는 셈이에요.
그런데 scanf("%hhd", &a);꼴로 받는다고 하면 3을 입력하면 3이라는 숫자가 그대로 들어갑니다.
#includeusing namespace std; int main() { char c; scanf("%c", &c); printf("hhd: %hhd\n", c); scanf("%hhd", &c); printf("hhd: %hhd\n", c); return 0; }
위의 코드 실행해서 3을 2번 입력해보면 무슨말인지 아실거에요.
이거 말고도 더 많은 format specifier들이 있는데, 이 정도만 알면 이거 찾아볼 일은 거의 없을 거에요
%x, %o는 이미 아시겠죠? (16진수 8진수) 여기서도 접두사 ll, h 같은거 붙이는 방법은 위와 동일해요.
'Programming Languages > C++14' 카테고리의 다른 글
함수 템플릿과 템플릿 함수, 클래스 템플릿과 템플릿 클래스의 차이 (0) | 2018.08.15 |
---|