이 프로그램을 분석하면,
첫째줄 "the"는 화면에 출력되며,
둘째줄인 first는 위의 그림에서는 띄우지 않았으나 괄호(" 다음에 한 칸 띄어서 작성한다. 그러니깐 (" first~ 이다. 출력을 하면
아래 그림과 같이 the first 라고 띄어져 나온다.
그리고 C program은 한 칸 아래에서 나오게 되는데 그 이유는 뒤에 있는 \n때문이다.
\n은 줄을 바꾸다라는 의미이다. 그래서 C program이라는 글자가 한칸 아래에서 출력이 된다.
그런데 다음 printf문에서 C program뒤에 \n이 붙이지 않았다. 하지만 4번째 줄에서 ("다음에, 그러니까 example. 앞에 \n을 붙였기 때문에 아래 문장에서 출력이 된다. 그래서 아래와 같은 출력이 나온다.
\n은 한 문장으로 취급해야 한다. \이것만 쓰면 이것도 같이 출력된다!!
참고
// 주석문
주석문이란 문장을 설명할 때 쓰는 것, // 입력하고 다음에 쓰는 문장은 컴파일 되지 않는다.
C언어 교재에는 프로그램을 설명을 하기 때문에 주석문을 많이 볼 수 있다.
정수형 변수, %d,%x, %X를 다루는 프로그램.
이번에는 %d와 %x를 알아보겠다.
%d는 정수형을 받는 연산자이다. 연산자는 나중에 배우니 여기에서는 따로 설명하지 않겠다. 그냥 %d가 정수를 대신해서 받아서 화면에 볼 수 있게 나온다고 할 수 있다. 위의 그림에서 int number; 를 선언하였다. int는 정수형 변수이다. 여기서, 변수란 어떠한 값을 저장하는 메모리내에 저장장소라고 정의 되어있다.
int는 정수 integer의 약자이다. 이것을 선언해야 정수 값을 넣을 수 있다.
즉, int number;는 정수를 number에 넣겠다는 뜻이 된다. 당연히 int a, int test등....
여러가지 문자로 반환할 수 있다. 단, 조건이 있다. 위에서 사용하다시피 변수는 영어로 되어있다. 조건이 있기 때문이다.
변수조건
1. 영어
2.처음 글자가 '_' 나 영어가 되어야한다. 이 조건을 만족시키면 뒤에 숫자나 기호를 써도 된다.
예를 들어서 int 1;은 선언되지 않는다. 하지만, int _1;l이나 int a1등은 선언할 수 있다.
조건 2번이 그러한 말이다. 그러나 되도록이면 영어를 쓰는 것이 좋고 나중에 프로그램이 길어지면, 작성자 본인이 변수를 선언한 것이 어떤 것을 선언했는지 찾기 어려운 점이 많아 되도록이면, 알기 쉽게 단어를 사용한다. 예를 들어 합계 = sum, int sum; 이런식으로 하는 것이 좋다.
3. 함수명은 사용 불가능.
그 예로 printf문은 사용불가, 그 밖에 프로그램 소스시 다른 명령어와 중복되는 단어는 변수로 사용하지 않는 것이 좋다.
4. 예약어 사용 금지 (if, else...등)
그리고 number = 3; 오른쪽의 3을 number에 대입하겠다는 뜻이다.
그리고 2번째 줄을 보면 number대신에 13이라는 숫자를 넣었다. 필자는 int number =3; 선언문 때문에 혼돈하였다. 그러나 숫자를 써도 number와는 아무런 상관이 없다. 그대신에 정수형을 변환하는 연산자 반드시 %d는 있어야한다. 실수라면 당연히 실수형인 %f가 있어야 한다. 연산자는 아직 본격적으로 들어가지 않았으므로 다음에 자세히 정리하겠다.
%x는 헥스의 약자로서 16진수를 대신한다.
3번째 줄은 13을 16진수로 변환한 값이다. 그런데 그 다음줄에는 바로 대문자 D로 출력이 된다. %x는 소문자, %X는 대문자이기 때문에 출력도 대소문자에 맞게 나온다.
그 아래에 것도 숫자만 바꿨을 뿐 동일하게 출력된다.
다음 프로그램은 길이를 3으로 선언하여 정사각형 넓이를 계산한 값을 출력하는 프로그램이다.
마찬가지로 각각 length와 area를 정수형으로 선언한다.
그리고 길이를 3으로 대입시킨다.
area = 길이 * 길이(length * length)로 대입한다.
그러면 메모리에 int length, int area가 각각의 위치에 먼저 기억되고 다음 lengt에 3을 대입하고 area를 length * length 대입하게 된다. 그리고 나서 3을 대입하게 되며, 결국에는 9라는 값이 출력하게 된다.
다음은 원주율을 구하는 프로그램이다.
#define에 대해서 알아보자
#define문은 정의한다 라는 전처리 문이다. #include가 어떤 것을 포함하는 전처리 문이라면,
#defined은 어떤 수를 정의한다.
위의 #define PI 3.1416;은 PI는 3.1416이라고 완전히 못박아 놓은 것이다.
변수는 어떠한 값을 자유롭게 변할 수 있지만, 상수는 한 번 정하면 절대적이다.
예를들어 위에서 정의한 int number;는 number =3 ;이라고 대입시켜서 3이라고 할 수 있다.그러나 다음문장에 다시 number =4;라고 선언한 뒤, printf("~~", number);라고 명령문을 만들면 위에는 3이였으나, 지금 문장에는 4가 출력된다.
number =3;
printf("%d\n", number); -> 출력시 3
number =4;
printf("%d\n", number); -> 출력시 4
위의 프로그램을 잘보자. 변수 number =3;은 아래 printf문에 3을 출력한다.
그러나 아래에 다시 4라고 선언한뒤, 아래 printf문은 4라고 출력된다. 이렇듯 number는 상황에 따라 값을 주면, 출력을 달리 할 수 있다. 이것이 변수.
아래그림 참고.
위의 그림에서 number = 3;선언뒤에 프린트문은 당연히 3이다. 그런데 나중에 number =4;라고 했는데 sum = 3 + 3;(결과값 6)만 출력이 되었다. 3이 넘버에 지정되고 섬에 계산되었는데 나중에 4라고 지정해도 8이 출력되지 않는다. 물론 프린트문 뒤에 sum 대신 number라고 쓰면, 4가 나온다. 하지만, sum은 그대로 6이다. 아래그림을 보자.
이 같은 경우는 넘버를 먼저 4로 지정하고 썸에 계산되어 8이 나왔다. 이처럼 변수 프로그램 작성시에는 무엇이 순서대로 메모리에 저장되는지 아는 것이 중요하다.
메모리에 변수가 선언되고 알맞은 위치에 저장된다.
그리고 3이 넘버에 저장되고 그 값을 갖는다.
다시 4를 선언하여 넘버에 저장된다.
마지막으로 그 4가 썸에 저장되어 비로서 8이 나온다.
위의 잘못된 예는 이 개념을 이해하지 못하여 6이 나온것이다.
반대로 상수는 변하지 않는 값이다. #define PI 3.1416으로 선언하면 PI는 무조건 3.1416이다. PI를 PI =4;라고 선언해도 다른 수가 출력되지 않는다. 만약에 바꾸고 싶으면, #define PI 4.10으로 수정하면 프로그램 내에 PI는 4.10으로 된다. 이것은 프로그램을 구성시에 같은 숫자가 많이 들어갈 때 쓰면 용이하다. 암튼 이것이 상수와 변수의 차이이다.
float이라는 변수는 실수를 선언하는 실수형 변수이다. 프로그램을 보면 알겠지만 원주율 파이는 3.14XXXXX이므로 최종값이 소수점인 형태로 나올 수 밖에 없다. 그래서 실수형 변수인 float을 선언한다.
그리고 아래 프린트문은 위에 설명한 length와 area와 동일하다.
마지막 줄에 %7.2f는 원래 %f이다. 이것은 실수를 표현하는 것으로 %f 앞에 7.2가 붙었다.
이것은 실수를 전제 7자리까지 나타내고 그 중에 소수점 2째자리 까지만 표현하라는 의미이다.
아래 그림들을 비교해보자!!
위의 파일은 프로그램 소스이다.
이것은 어제 배운 순수C파일인 d.i파일이다. int main()위에 전처리문이 없어졌다는 것을 확인 할 수 있다. 즉 #define 또한 전처리문이다. 실제로 스샷위의 이상한 글자가 많이 적혀있다. 그러나 #include나 #define은 나타나지 않는다.
참고사항
C언어는 기본형식을 익히는것 또한 중요하다.
따라서 오늘 가장 기초적인 것을 했지만, 필자에게는 정말로 머리 아프다ㅜㅜ 형식을 익히기 위해 적겠음
#include <stdio.h> -> 전처리 include 에서 함수인 <stdio.h>를 가져온다. 실제로 C언어가 설치된 경로를 확인하면 include안에 <stdio.h>가 들어있는 것을 확인 할 수 있다. 전처리문을 가장 처음에 쓴다. 컴파일 4단계과정을 안다면, 쉽게 이해가능함.
그 다음은 함수 선언.
보통은 void main() 이나 int main()을 주로 쓴다. 이거 말고도 많은 함수가 있다. 전처리문 다음에 무조건 적이다. C 언어 새로운 버전 문법에서는 void보단 int가 많이 쓰인다.
다음 {
이 중괄호가 프로그램 작성 내용을 담는 시작의 괄호이다. 나중에 가장 밑에 }는 닫는 괄호.
어쨌든 { ~ }사이에 내용이 실제 프로그램 내용이 되겠다.
그리고 가장 많이 쓰는 프린트문
pritntf(" 내용\n", 변수);
위와 같이 프린트 명령어를 쓰고 (를 열어 "~"에 출력하고자 하는 내용을 적는다.
\n은 줄을 바꾸다. 출력시 보기가 좋다. 그리고 ,를 찍고 변수등을 뒤에 사용한다는 것을 알아두자. 2장에서 배울 연산자에서 다시 언급하겠음.
'C언어 수업정리 > 3월 수업정리' 카테고리의 다른 글
3월11일 아스키코드, 유니코드 ,연산자, 논리식.... (0) | 2013.03.11 |
---|---|
3월 8일 형수정자 연산자 sizeof (1) | 2013.03.08 |
3월 7일 비트개념, 변수선언, 자료형타입 (0) | 2013.03.07 |
3월 5일 수업정리 C언어 기본작성 전처리파일, 기계어파일 (0) | 2013.03.05 |
3월 4일 수업정리 cpu3대 구성요소 (0) | 2013.03.04 |