#include <stdio.h> //전처리하는 부분
int main(void) //운영체제가 호출
{
printf("Hello C world"); //모니터에 출력
return 0; //운영체제에게 값 반환 후, main() 종료
}
printf는 출력 함수, scanf는 입력 함수이다.
더 자세히 알아보자.
printf는 모니터에 데이터를 출력하며 stdio.h 헤더 파일이 필요하다.
데이터를 출력할 때 아래 특수문자들은 아래에 나열한 정의대로 출력된다.
\n : 줄바꿈
\b : 백스페이스(Backspace)
\f : 폼 피드(Form Feed)
\r : 캐리지 리턴(Carriage Return)
\t : 수평 탭(탭을 친 것 처럼 들여쓰기)
\v : 수직 탭
\ : 역슬래시
\' : 작은 따옴표
\" : 큰 따옴표
#include <stdio.h>
int main(void)
{
printf("\t Hello C! \n Hello world! \n");
printf("큰따옴표 : \" \" \" \n");
printf("작은또옴표 : \' \' \n");
printf("역슬래시 : \\");
}
위와 같이 출력 서식 문자를 사용해 계산 결과를 printf문 안에서 사용할 수 있다.
%d, %i : 10진수 정수(양수 음수 모두 가능)
%x, %o : 16진수 정수, 8진수 정수(양수만)
%f, %lf : 10진수 실수(양수 음수 모두 가능 lf : long float)
#include <stdio.h>
int main(void)
{
printf("%d 더하기 %d 는 %d 입니다 \n", 3, 5, 3+5);
printf("%d 더하기 %i 는 %i 입니다 \n", 3, 5, 3+5);
printf("%d - %d = %d 입니다 \n", 3, 5, 3-5);
printf("%i - %i = %i 입니다 \n", 3, 5, 3-5);
printf("10진수: %d는 16진수: %x, 8진수: %o 입니다. \n", 50, 50, 50);
printf("10진수: %d는 16진수: %x, 8진수: %o 입니다. \n", -50, -50, -50);
// 음수는 16진수 8진수가 이상한 값이 나옴 쓰레기 값... 에러는 안남
printf("10진수 정수: %d \n", 0.5);
printf("10진수 실수: %f \n", 0.5);
printf("10진수 실수: %lf \n", 0.5);
printf("소수점 이하 6자리 이상: %f \n", 0.5655678); // 반올림
printf("소수점 이하 6자리 이상: %lf \n", 0.566778); // 더 많이 씀 (데이터의 손실을 줄이기 위해)
return 0;
}
%c : 한 개의 문자
%s : 문자열
#include <stdio.h>
int main(void)
{
printf("a를 대문자로 표현하면 %c 입니다. \n", 'A');
printf("%s %c 입니다. \n", "a를 대문자로 표현하면", 'A');
printf("%s %d %s \n", "2곱하기 3은", 2 * 3, "입니다.");
return 0;
}
큰 따옴표는 한 개의 문자일지라도 문자열로 인식한다는 것에 주의하자.
%u : 10진수 정수(양수만 가능)
#include <stdio.h>
int main(void)
{
printf("%d \n", 2147483647); //%d의 최고값
printf("%d \n", 2147483648);
printf("%u \n", 4294967295); //%d의 두배
return 0;
}
%d는 음수와 양수 모두 표현이 가능하고, %u는 양수만 표현 가능하지만, %u는 %d의 2배의 범위를 표현할 수 있다.
%e : e표기법에 의한 실수
%E : E표기법에 의한 실수 (소문자 대문자만 다름, 사실 같음)
%g : 소수점 이하 자리수에 따라 %f, %e 둘 중 하나를 선택
%G : 소수점 이하 자리수에 따라 %f, %E 둘 중 하나를 선택
(소수점 6자리를 기준으로 %f, 넘어가면 지수형태로 표현)
%% : 퍼센트 기호 출력 (대소문자만 다름)
#include <stdio.h>
int main(void)
{
printf("%f \n", 0.000123);
printf("%f \n", 0.0001236);
printf("%e \n", 0.000123);
printf("%E \n", 0.0001236);
printf("%g \n", 0.000123);
printf("%G \n", 0.0001236);
printf("올해 우리나라 경제 성장률은 5%%이다. \n");
return 0;
}
print 할 때 숫자의 자릿수를 얼마나 확보할 것인지에 대해 미리 정할 수 있다.
%03d 필드 폭을 3 칸 확보하고 오른쪽 정렬, 남은 자리는 0으로 채움
%-3d 필드 폭을 3 칸 확보하고 왼쪽 정렬
%+3d 필드 폭을 3 칸 확보하고 오른쪽 정렬, 양수는 +, 음수는 -출력
#include <stdio.h>
int main(void)
{
printf("%03d, %03d, %03d \n", 1, 20, 300);
printf("%-03d, %-03d, %-3d \n", 1, 20, 300);
printf("%+03d, %+03d, %+3d \n", 1, 20, 300);
printf("%+3d, %+3d, %+3d \n", 1, 20, -300);
return 0;
}