본문 바로가기
프로그래밍언어/C언어

printf() 함수 서식문자 - 10진수 양수(%u), 실수 표기법(%e, %E, %g, %G, %%)

by J코딩 2021. 8. 18.
반응형

서식 문자 %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%입니다."의 %를 출력하고자 할 때는 %%로 하면 됩니다.

반응형

댓글