본문으로 바로가기

아는 사람이 좀 물어봤는데, 처음 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이라는 숫자가 그대로 들어갑니다.



#include 
using 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 같은거 붙이는 방법은 위와 동일해요.