서식 문자 %u를 사용하면 %d로 출력할 수 있는 양수의 범위보다 두 배 더 넓게 출력할 수 있습니다.
다음 예제는 서식 문자 %d와 %u의 차이를 설명하고 있는 코드입니다.
6행에서 서식 문자 %d로 표현할 수 있는 범위는 기본적으로 int타입의 범위인 -2,147,483,648 ~ 2,147,483,647을 출력하고 있습니다.
10행에서 최대값보다 큰 값을 출력하려고 하니까 이상한 음수 값이 출력됩니다. 이는 overflow가 발생했기 때문이다.
2,147,483,650은 2,147,483,647보다 3만큼 overflow하였고, 그 수만큼 음수에서 빠지게 됩니다. 따라서 위 결과처럼 -2147483646이 되는 것입니다.
12행에서 서식 문자 %d로 표현할 수 있는 최대값 2,147,483,647보다 큰 값을 출력하기 위해서 서식 문자 %u를 사용하고 있습니다. 서식 문자 %는 음수를 표현하지 않기 때문에 그만큼의 숫자를 양수가 가지게 되며, 범위는 기본적으로 unsigned int타입의 범위인 0 ~ 4,294,967,295를 출력하고 있습니다. 이 값은 서식 문자 %d로 표현할 수 있는 최대값의 약 두 배가 됩니다. 만약 서식 문자 %u로 표현할 수 있는 최대값보다 큰 값을 출력하면 서식 문자 %d와 마찬가지로 overflow가 발생하여 이상한 음수 값이 출력됩니다.
다음예제는 서식 문자 %e, %E, %g, %G, %%를 설명하고 있는 코드입니다.
6번행에서 서식 문자 %f로 소수점 6자리까지 출력합니다.
8번행에서 서식 문자 %f로 소수점 6자리를 넘는 값을 출력하면 반올림합니다.
10번행에서 서식 문자 %e로 소수점 6자리까지출력합니다. 출력결과를 보면 1.230000e-004는
를 의미합니다. 컴퓨터는 -4처럼 위첨자를 키보드로 표시할 수 없기때문에 지수표기법을 사용하여 위 결과처럼 출력이 됩니다.
12번행에서 서식 문자 %E로 소수점 6자리를 넘는 값을 출력합니다. 서식 문자 %e와 %E의 차이점은 알파벳 e가 소문자인지 대문자인지의 차이밖에 없습니다.
14번행에서 서식 문자 %g로 소수점 6자리까지 값은 %f 형식으로 출력합니다.
16번행에서 서식 문자 %G로 소수점 6자리를 넘는 값은 %E 형식으로 출력합니다.
서식 문자 %g화 %G는 서식 문자 %f와 %e(%E) 둘 중의 하나의 서식으로 출력해 줍니다. 소수점 6자리까지는 %f 형식으로 출력해주고, 소수점 6자리를 넘는 값은 %e(%E) 형식으로 출력해 줍니다.
18번행에서는 %하나는 위와 같은 서식 문자로 오인할 가능성이 있기 때문에 위 결과와 같이 "코로나 소상공인 5차지원금은 2021년 기준중위 소득의 75%입니다."의 %를 출력하고자 할 때는 %%로 하면 됩니다.
'프로그래밍언어 > C언어' 카테고리의 다른 글
키보드로부터 데이터 입력받기 - scanf()함수 (0) | 2021.08.20 |
---|---|
printf() 함수 서식문자 - 필드 폭 지정, 소수점 조정 (0) | 2021.08.19 |
printf() 함수 서식문자 - 문자와 문자열 출력하기(%c, %s) (2) | 2021.08.17 |
printf() 함수 서식문자 - 숫자 출력하기(%d, %i, %x, %o, %f, %lf) (3) | 2021.08.16 |
printf()함수 - 특수 문자 (0) | 2021.08.16 |
댓글