|
|||||||||||||||||||||||||||||
2주차 강의에서 산술식을 표현하고 평가하는 방법을 살펴보았다. 이제 산술식의 평가 결과 값을 화면에 출력하는 방법에 대해서 알아보고자 한다. 여러분은 printf() 함수를 사용하여 그렇게 할 수 있다. printf() 함수에 관해서는 이미 1주차 강의에서 정수를 출력하기 위한 방법으로 간단히 다루었지만, 여기서는 더 자세히 다룬다. 또한 정수뿐만 아니라, 실수, 문자, 스트링을 출력하는 방법에 대해서도 알아본다. 1. printf() printf() 함수는 스트링이나
계산된 결과를 화면에 출력하는데 사용된다. 다음은 스트링 상수를 출력하는 printf() 함수의 예이다
위에서 상자는 화면을 나타내고, prinf() 함수의 수행 결과가 그 화면에 디스플레이된다고 가정한다. 다음은 식의 결과 값을 출력하는 printf() 함수의 예이다.
이제 printf()는 두 개의 인자(argument)를 갖는다. 첫 번째 인자는 출력 형태를 제어하는 명세를 포함하기 때문에 제어 스트링(control string)이라 한다. 제어 스트링은 '%d'와 같은 형식 코드를 포함할 수 있다. printf()는 제어 스트링에 포함된 문자들을 그대로 출력하는데, 형식 코드를 만나면 두 번째
인자의 값으로 대체한다. 그 결과는 출력
스트링이다. 즉, 2+3의 식이 평가되어 그 결과 값 5가 생성되고,
이 값이 제어 스트링의 '%d'를 대체한다. 그 결과 출력 스트링이 생성되고, 이것이 화면에 출력된다. 제어 스트링은 한 개 이상의 형식 코드를 포함할 수 있다. 다음 printf()를 생각해보자.
이제는 제어 스트링은 3개의 형식 코드를 포함하고 있고, 제어 스트링 이외에 3개의 인자를 더 갖는다. a, b의 변수는 각각 2와 3의 정수 값을 포함한다고 가정한다. 형식 코드에는 나머지 인자들이 왼쪽에서 오른쪽의 순서로 차례로 대응된다. 마찬가지로, 3개 인자들이
각각 평가되고, 그 결과 값들이 대응되는 형식 코드를 대체하여 출력 스트링을 생성한다.
위에서 살펴본 printf()에서 형식 코드는 '%d'로 구성되었다. 형식 코드는 %로 시작되고, d와 같은 문자로 끝난다. 이러한 문자를 변환 문자(conversion character)라 한다. 가령, d는 정수를 십진수 정수 값으로 변환하여 출력하는데 사용된다. 정수는 컴퓨터 내부에서 2진수로 표현되어 있음을 유의하라. printf()는 정수뿐만 아니라 2주차
강의에서 다룬 실수, 문자, 스트링의 값도 출력할 수 있다. 이를 위해서 다양한 변환 문자가 제공된다. 다음은 printf()에서
사용 가능한 변환 문자를 보여준다.
다음은 다양한 변환 문자를 포함하는 printf() 함수의 예이다.
두 번째와 세 번째 printf()는 동일한 실수 값을 출력하는데, 제어 스트링에 포함된 변환 문자에서 보듯이 값의 출력 형태가 다르다. 세 번째(변환 문자 e 포함)는 두 번째(변환 문자 f 포함)와는 다르게 실수를 지수 표기 형태로 출력하는 것을 알 수 있다. 네 번째 printf()는 제어 스트링에 변환 문자 s를 포함하고 있으며, 그 대응 인자는 스트링 "abc"이다. 따라서 해당 스트링이 출력된다. 다음 print()를 다시 한번 생각해보자.
필드 폭은 출력될 실수의 전체 숫자 개수를 나타내며, 정밀도는 소수점 이하 자리수를 나타낸다. 314.159의 전체 숫자(필드폭)는 6개이고, 소수점 이하 자리수(정밀도)는 3개이다. 만약, 실수의 출력형태가 3.14159일 경우에, 출력될 숫자가 전체 6개이고, 소수점 이하 자리수가 5이므로, 다음과 같이 작성되어야 한다.
실수를 십진수 정수로 변환하여 출력할 것을 요청하고 있다. 무엇이 실제로 출력될 것인가? 실수를 정수로 변환하여 출력한다고 생각하면 314가 출력될까? 그렇지 않다. 컴퓨터에서 정수와 실수는 그 내부 표현 방식이 다르다. C에서 printf()는 변환 문자 d를 보고서 그 대응 인자 314.159의 데이터 타입을 고려하지 않고, 그 표현을 정수로 판단하여 십진수로 변환하여 출력한다. 따라서 전혀 엉뚱한 값이 출력된다.
|
여러분은 printf()에서 특수 문자 \n의 용도를 1주차 강의에서 이미 살펴보았다. \n은 다음번째 출력 위치를 다음 줄의 첫 번째 열로 이동하라는 특수한 의미를 갖는다. 여기서 '\'을 백슬러쉬(backslash)라 부르고, 이를 또한 탈출 문자(escape character)라 부른다. 이것은 '\' 다음에 오는 문자에 대한 정상적인 해석을 벗어나게 하여 특수한 의미를 부여하기 때문이다. '\'와 문자로 구성된 문자열을 탈출 문자열(escape sequence)라 한다. 다음 테이블은 C에서 제공하는 탈출 문자열을 몇 가지 보여준다.
탈출 문자열을 사용하여 프로그램 실행 결과를 원하는 형태로 출력할 수 있다.
첫 번째와 두 번째 printf()는 탭을 사용한 형식적인 출력을 보여준다. 세 번째와 네 번째 printf()는 출력 스트링에 작은따옴표(')와 큰따옴표(")를 포함하는 방법을 보여준다. 작은따옴표와 큰따옴표는 각각 문자 상수와 스트링 상수를 표현하는데 사용되기 때문에, 이를 스트링에 포함시키려면 탈출 문자열로 표현되어야 한다.
|
주어진 문제에 대한 프로그램 작성은 1주차
강의(문제 해결 및 프로그램 작성)에서 다루었듯이 다음과 같은 5단계의 문제 해결 방법에 따라서 이루어진다.
다음은 Visual Studio에 포함된 Visual C++를 사용하여 다시 한번 프로젝트를 생성하고, 파일을 생성하는 과정을 보여준다. 다음에 위의 프로그램 3-1을 작성하고, 컴파일링하고, 링킹하고, 실행시키는 과정을 윈도 캡을 사용하여 단계별로 순차적으로 보여준다. |
|
|
|
|
|