제 4강) 변수 |
혹시 지난시간에 보았던 예제가 기억나시나요?
#include <stdio.h>
int main(void)
{
int num = 3; // num이라는 int형 변수를 생성하여 3이라는 값으로 초기화
printf("Hello World!!! \n"); // printf 함수를 사용
printf("num = %d \n", num); // printf 함수를 사용하여 num 출력
return 0 ; // 프로그램 종료
}
바로 이 예제였습니다.
그리고 이 예제를 토대로 해석을 했었죠.
그 중에서 이걸 기억하시나요?
int num = 3; |
메인함수에서 설명하지 않았던 것중 하나가 바로 "int"입니다. 여기서 설명하기 위해서 하지 않았는데요. "int"는 나중에 배우겠지만 "자료형"이라고 불리는 것입니다. 그 중에서 "int"는 "부호가 있는 정수"를 뜻합니다. 그럼 위의 구문은 어떤 뜻일까요? |
정수형 num은 3이다. |
라는 뜻으로 해석이 됩니다. 즉, 위와 같은 문장은 "변수의 선언"이라고 합니다. |
바로 이것에 대해서 배울것입니다.
변수? |
변수는 물건을 담는 상자라고 생각하면됩니다.
부피가 A인 박스에는 A만큼의 무언가를 담을 수 있고,
부피가 B인 박스에는 B만큼의 무언가를 담을 수 있으며,
부피가 C인 박스에는 C만큼의 무언가를 담을 수 있습니다.
변수는 "어떤 데이터를 저장하는 메모리 공간"이라고 이해하시면 됩니다.
즉, 변수를 선언하게 되면 그 변수 선언에 사용한 자료형 만큼의 크기를 가진 메모리 공간을 할당하게 됩니다.
변수 선언 방법 |
변수는 다음과 같이 선언할 수 있습니다. // 자료형 변수이름; int num; // int형 변수 num // 자료형 변수이름 = 초기값; int num = 13; // 초기값이 13인 int형 변수 num |
int num = 3;
이것은 이렇게 해석이 되겠지요?
"초기값이 3인 int형 변수 num"
자료형 |
위에서와 같이 박스에 빗대어 보자면!! 자료형은 박스의 "부피"라고 생각하면 됩니다. 즉, 변수가 저장될 공간의 크기, 변수가 다룰 데이터의 형식을 결정하게 되는 것이지요. |
자료형은 다음시간에 배울 예정이지만 간단하게 몇가지만 알아봅시다.
자료형 | 뜻 |
int | 부호가 있는 10진수 정수 |
double | 부호가 있는 10진수 실수 |
char | 문자 |
이 정도만 알아두면 오늘 예제는 거뜬하게 이해가 가능할 것입니다.
변수의 초기화 |
변수 선언 방법에서 다음과 같은 방법을 보셨을겁니다.
// 자료형 변수이름 = 초기값;
int num = 13; // 초기값이 13인 int형 변수 num
위의 예에서는 int형 변수 num에 13이라는 값을 바로 대입을 했네요.
여기서 변수 num은 "13으로 초기화 했다"라고 합니다.
즉, 변수 선언 후에 최초로 값을 넣어주는 것을 "초기화"라고 합니다.
(또는 13을 대입하다 라고도 합니다.)
그럼 여기서 예제를 하나 봅시다.
#include <stdio.h>
int main(void)
{
int num = 13;
printf("num의 값은 : %d \n", num);
return 0;
}
지난 시간에 봤겠지만 "printf 함수는 출력함수"라고 배웠으며, "%d 서식문자는 정수형 값을 출력" 하는 것이라고 배웠고, "\n는 개행"이라고 배웠으며, 컴마 후에 오는 num은 "%d에서 출력해줄 값"이라고 배웠습니다.
나중에 뒤에서 printf에 대해서 더 자세히 배울때 상세하게 배우도록 하고 일단은 이 정도로만 알아둡시다.
그래서 이걸 실행하게 되면
이렇게 출력됨을 확인할 수 있습니다.
왜냐하면 우리는 num을 선언해주고 거기에 13이라는 값으로 초기화해주었기 때문이죠.
그럼 다음 예제를 볼까요?
#include
int main(void)
{
int num = 13;
printf("num의 값은 : %d \n", num);
num = 7;
printf("num의 값은 : %d \n", num);
return 0;
}
이걸 출력하게 되면 어떻게 될까요?
이렇게 출력이 되었군요.
아까의 예제에서 추가된 것은 바로 8~9번줄 인데요.
이미 num이라는 변수는 메모리상에 int의 크기로 할당되어있습니다.
그래서 나중에 이 num이라는 변수를 사용하고 싶다면 "num = " 하고 값을 대입하거나 "num"을 이용하여 값을 불러올 수 있습니다.
그래서 8번줄에서 13이 저장되어 있는 num에 7을 넣어줬습니다.
그리고 9번줄에서 그 num 변수를 출력하는 것이지요.
이제 아까 잠깐 표로 보았던 자료형들을 이용해서 간단한 예제를 짜봅시다.
#include <stdio.h>
int main(void)
{
int num_int = 13;
double num_double = 3.141592;
char ch = 'A';
printf("num_int의 값은 : %d \n", num_int);
printf("num_double의 값은 : %f \n", num_double);
printf("ch의 값은 : %c \n", ch);
return 0;
}
double은 실수형 자료형으로 소수점 15자리수까지 정확도를 보장합니다.
double의 경우에는 출력할때는 "%f"를 주로 사용합니다.
char는 문자형 자료형으로 문자 하나를 표현할 수 있습니다.
char의 경우에는 출력할때는 "%c"를 사용합니다.
그래서 출력결과는 다음과 같습니다.
궁금점) 초기화를 안하고 출력하면? |
위의 예제 전부 변수를 초기화하고 출력을 해보았습니다.
그런데 초기화를 하지 않은 상태에서 출력을 하면 어떻게 될까요?
GCC에서 출력 |
GCC에서는 대부분 int값의 경우에는 "-10으로 시작하는 수"가, double값의 경우에는 "0.000000", char값의 경우에는 값이 없게 됩니다.
MS 컴파일러에서 출력 |
먼저 디버깅에러를 내뿜습니다.
일단 우리는 확인을 위하여 "무시"를 누릅니다.
(내용은 num_int, num_double, ch 변수가 초기화되지 않았다는 내용입니다.)
이렇게 알수없는 값들이 저장이 됩니다.
이렇게 대표적인 2가지 컴파일러를 대상으로 "초기화 되지 않은 변수"들을 출력해보았는데요.
공통적으로 이상한 값들이 저장되어 있다는 것을 확인할 수 있습니다.
그래서 다음과 같이 표현을 합니다.
초기화 되지 않은 변수는 "쓰레기 값(불필요 값)"이 저장된다. |
궁금점) 한 번에 여러변수를 만들수는 없나? |
만들수는 있으나 자료형이 같아야만 합니다.
int num1;
int num2;
int num3;
↓↓↓↓↓↓↓↓↓↓
int num1, num2, num3;
이런식으로 변수형이 같아야 가능합니다.
그리고 이렇게도 가능합니다.
int num1 = 3;
int num2 = 11;
int num3 = 9;
↓↓↓↓↓↓↓↓↓↓
int num1 = 3, num2 = 11, num3 = 9;
궁금점) 변수 이름은 내 마음대로? |
변수의 이름은 마음대로 지어도 됩니다.
단!!! 다음의 규칙을 어기지 않는다면 말이죠.
1. 알파벳, 숫자, 언더바(_)로 구성한다. 2. C언어는 대소문자를 구분한다. 3. 변수의 이름은 숫자로 시작할 수 없고, "키워드"도 변수 이름으로 사용할 수 없다. 4. 이름 사이의 공백(띄어쓰기)는 불가능하다. |
키워드 |
미리 정의해 놓은 단어를 뜻합니다. (int, double, float, char, if, while, for 등...) (간단하게 코드를 입력할 때 색이 바뀌는 것은 키워드라고 생각하면 됩니다.) |
즉, 다음과 같은 것은 허용하지 않습니다.
int 1number; (X) int double; (X) int my number; (X) |
이런 것들은 다음과 같이 바꾸어서 사용하면 됩니다.
int 1number; → int number1; int double; → int _double; 혹은 int double_num; int my number; → int my_number; |
다음시간에는 |
오늘은 변수의 선언에 대해서 알아보았습니다.
다음시간에는 이 변수에서 쓰이는 "자료형"에 대해서 알아보도록 하겠습니다.
'Study > C언어' 카테고리의 다른 글
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 06 [자료형2] (0) | 2018.07.08 |
---|---|
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 05 [자료형1] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 03 [C언어와의 첫만남] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 00 [Visual Studio 2017 15.4.2버전에서 프로젝트 생성하기] (0) | 2018.07.08 |
처음하시는 분들을 위한 C언어 기초강의 시즌2 - 02 [C언어 맛보기] (0) | 2018.07.08 |