int32_t -> 32비트 부호있는 정수형 변수이다.
PRId32는 inttypes.h에 정의되어 있는 "d"로 대체된다.
-------> inttypes.h 헤더 파일은 PRId32를 32비트 부호있는 값의 적당한 포맷지정자ㅋ를 나타내는 문자열로 정의한다.
해당 부분을 대체시키면
printf("me32 = %""d""\n",me32);
이 된다.
C는 연속된 큰따옴표 문자열들을 하나의 큰따옴표 문자열로 결합한다.
즉 printf("me32= %d\n",me32); 가 된다.
출력내용
int32_t 는 정확하게 32비트를 사용하기 때문에 고정폭 데이터형(exact width type)이라 부른다.
int_least8_t형은 8비트 부호있는 정수값을 가질 수 있는 최소폭 데이터형의 별명이다.
int_fast8_t 형은 8비트 부호있는 값들을 가장 빠르게 계산 할 수 있다. 이 데이터형을 최고속 초소폭 데이터형(fastest minimum width type)이라 부른다.
intmax_t 형은 최대폭 정수형이다.
uintmax_t 형은 부호없는 최대폭 정수형이다.
-----> 이들은 long long 과 unsigned long 보다 더클 수 있다. C 컴파일러들이 이보다 더큰 데이터형을 정의하는것을 허용한다.
데이터형들의 크기
sizeof에 사용되는 데이터형을 위한 %zd 지정자가 존재한다.
잘못된 전달인자 사용의 예
printf함수와 scanf함수는 전달인자의 개수가 가변적이기 때문에 위와같이 전달인자를 잘못 넣을 수 있다.
float 형 값을 %d로 출력할 때, float형 값의 가장 가까운 int형값으로 변환되지않고 이상한 값을 출력한다.
전달인자의 개수를 잘못 줬을 때 컴파일러에서 에러를 출력하기도하지만 프로그램은 정상적으로 작동하기때문에 그냥 넘어갈 수 있다.
printf함수에 정확한 개수의 전달인자를 사용했는지 확인하라.
이스케이프 문자사용
\a는 경보음을 내야하지만 내가 사용한 시스템에서는 경보음이 출력되지않았다.
\b는 백스페이스이다.
\b 7개를 통해 커서가 _ 7개 앞으로 가있다.
이후 입력을 해주고.
\n은 줄내림, \t는 tap이다. \r은 캐리지 리턴으로 커서를 현재라인의 시작 위치로 옮긴다.
입력한후에 enter키가 들어가고 10번째 줄의 printf에 의해 커서를 한줄더 밑으로 내립니다.
10번째줄이 실행되고 11번째가 실행되지만 11번쨰 줄의 \r 캐리지 리턴으로 인해 커서가 맨앞으로가고 "우와"가 먼저 출력되고
\t 이 실행된후 문자열이 출력되고 끝이난다.
우와 이후에 10번째 줄이 줄내림 이후에 출력는것이 아닌 이유는 11번째 함수가 10번째 함수가 실행된 후에 실행되기 때문이다.
'Programming > C' 카테고리의 다른 글
C언어 공부 4 (0) | 2019.04.28 |
---|---|
C언어 공부 3 (0) | 2019.04.28 |
프로그래밍 연습 1 (0) | 2019.04.28 |
C언어 공부 2 (0) | 2019.04.28 |
C언어 공부 (0) | 2019.04.28 |