목차
오늘은 출력함수인 printf에 대해서 설명하고자 합니다.
전에 사용했던 예시에서는 그저 문자열의 출력만을 위해서 printf를 사용했습니다.
그러나 printf에는 문자열 출력외에도 다른 많은 기능을 제공합니다.
printf("HelloWorld!\n");처럼 문자열을 출력할 수도 있고
printf("1234\n");처럼 숫자를 출력할 수도 있습니다.
위의 예시는 printf("%d\n",1234);로 표시할수도 있습니다.
printf("1234\n"); = printf("%d\n",1234); 가 되는데요.
이 둘은 출력결과는 같지만 서로 다른 타입입니다.
그저 ""안에 넣었을 경우에는 문자열이 되지만, %d라는 특수문자를 사용했을때에는 문자가 아닌 숫자로써 출력이 되는 것입니다.
즉, printf("1234\n"); ≠ printf("%d\n",1234); 이렇게 되는 것이죠.
아직 이해가 안되신다면 다른 예로 설명을 드려보겠습니다.
printf("3+4\n"); 와 printf("%d\n",3+4);는 과연 같을까요?
앞에서 다르다했으니 다르겠지요.
하지만 전의 예시와는 다르게 후자의 예시는 출력결과 또한 다릅니다.
첫번째의 출력결과는 3+4
두번째의 출력결과는 7이 출력이 되게됩니다.
이게 %d를 썼을때와 쓰지않았을때의 차이입니다.
%d를 가리켜 서식문자(conversion)이라고 부릅니다.
%d는 정수타입으로 출력이기 때문에 3/2는 1.5가 아닌 1로 출력이 됩니다.
소수점은 반올림이 아닌 그냥 버림입니다.
그럼 자신의 이름과 전화번호를 출력하는 명령을 한줄에 작성해볼까요?
printf("홍길동\n %d-%d-%d\n",010,1234,5678);
위의 예시처럼 \n같은 이스케이프 시퀀스를 중간에 삽입하는 것도 가능합니다.
그럼 위의 코드는 맞는걸까요?
아마 컴파일이 오류가 나오거나 전화번호 010이 의도하지않았던 숫자로 출력이 될겁니다.
왜 컴파일 오류가 나는 것일까요?
숫자를 0으로 시작하게되면 컴파일러가 이 숫자는 8진수이구나 라고 인식을 하게됩니다.
0x는 16진수로 인식을 하구요.
때문에 멍청한 컴파일러는 유도리가 없기때문에 컴파일 오류를 내거나 8진수로 출력을 하게됩니다.
0으로 시작하는 숫자는 그냥 문자열로 출력하는 수 밖에 없습니다.
전화번호는 숫자라기보다는 문자에 가깝기때문에 전부 ""안에 써넣으셔도 무관합니다.
지금까지 보였던 예시들은 모두 직접 체험해보면서 해보시기바랍니다.
프로그래밍은 아는 것이 중요한게 아니라 몸에 베어야합니다.
그럼 오늘 강좌는 여기까지!
2016/10/01 - [C 언어] - [C언어] 주석 처리
2016/09/30 - [C 언어] - [C언어] 함수 그리고 첫 소스코드 분석
2016/09/30 - [C 언어] - [C언어] C프로그래밍 작업공간 마련 그리고 테스트
'프로그램 개발' 카테고리의 다른 글
[어셈블리어]범용, 세그먼트, 상태 레지스터 (0) | 2016.10.02 |
---|---|
[C언어] 연산자 (0) | 2016.10.01 |
[C언어] 주석 처리 (0) | 2016.10.01 |
[C언어] 함수 그리고 첫 소스코드 분석 (0) | 2016.09.30 |
[C언어] C프로그래밍 작업공간 마련 그리고 테스트 (0) | 2016.09.30 |