오늘 배울 내용은 변수와 상수에 대한 것!
챕터가 시작되기 전에 배울 내용을 사용해서 만들 수 있는 게임 화면? 같은 것을 보여주는데
이거 꽤 귀엽고 내가 뭘 배우는 건지, 어디에 쓰는 건지를 쉽게 알려줘서 괜찮은 것 같다!!
변수와 상수에 대한 것을 배우기 전에 지난 시간에 작성한 코드를 통해
C언어로 작성하는 코드의 기본 구조를 알아보았다
#include <stdio.h>
//전처리기 지시문 preprocessor directive
int main(void) { //main이라는 이름의 함수의 정의를 나타낸다.
printf("Hello World!"); //() 안의 내용을 출력하는 명령문.
return 0;
}
작성한 코드를 기계어로 번역하는 과정을 컴파일(Compile),
이 역할을 하는 프로그램을 컴파일러(Complier)라고 하는데,
우리가 사용하고 있는 비주얼 스튜디오Visual Studio가 바로 컴파일러다.
우리는 컴파일 하기 전에 컴파일러에게
컴파일에 필요한 것들을 미리 알려줘야만 하는데, 이때 전처리기 지시문을 사용한다.
전처리기 지시문은 #으로 시작된다.
#include = 가장 많이 사용되는 지시문으로, 지정한 파일을 코드에 포함하라는 의미를 가진다.
#define, #ifndef, #ifend 등 여러가지 지시문이 존재한다.
지시문 뒤에는 파일을 표시하는데, 파일을 표시하는 법은 두가지가 있다.
1. 파일을 < >로 지정: C언어에 정의된 표준 파일을 추가할 때
2. 파일을 " "로 지정: 직접 작성한 파일을 코드에 포함시킬 때
위 코드에 추가된 <stdio.h>는 표춘 입출력 함수를 포함하는 헤더 파일이다.
헤더 파일은 확장자가 .h인 파일로,
다른 파일에 정의된 상수나 변수, 함수 등을 사용하기 위해 만들어졌다.
<stdio.h>에는 printf(), scanf() 등 입출력에 관련된 함수들이 포함되어 있음.
int main(void){}는 main이라는 이름의 함수의 정의를 나타낸다.
main() 함수는 모든 프로그램의 시작점이다. 한 프로젝트에 하나만 존재한다.
아예 존재하지 않을 경우 프로그램이 실행되지 않고 오류가 발생한다.
main()의 앞에 붙은 int는 해당 함수가 반환하는 값의 자료형.
int는 정수형을 나타내므로 main() 함수가 반환하는 값은 정수다.
소괄호 안의 내용은 함수가 전달받는 값을 의미하는데, void는 값이 없다는 의미다.
변수變數는 변하는 값을 뜻한다.
변수는 다음과 같이 코드로 표현된다.
int age = 20;
여기서 int는 자료형을 뜻한다.
자료형이란 데이터의 형태를 나타내는 것으로. 값에 따라 정수형, 실수형, 문자형 등이 존재한다.
정수형은 정수를, 실수형은 실수를, 문자형은 문자를 표현하는 데에 사용된다.
int는 정수를 나타내는 자료형이다.
age는 변수의 이름을, 20은 자료형에 해당되는 값이다.
20은 정수이니 정수를 나타내는 자료형인 int를 사용했다.
변수와 값 사이에 위치한 등호(=)는 대입 연산자로, 값을 저장하는 데에 사용된다.
이 문장은 정수 20을 age라는 변수에 저장하는 의미가 된다.
int age; // 변수를 선언
age = 20; // 변수를 초기화
//또는
int age = 20; // 변수를 선언하고 동시에 초기화
프로그래밍을 하며 값을 사용하기 위해선 컴퓨터가 그 값을 기억해야 한다.
변수를 만들면 컴퓨터는 이를 위해 메모리 안에 변수 명으로 공간을 할당하는데,
이를 변수 선언이라고 한다.
변수를 선언한 이후에는 메모리에 값을 넣어 저장해야 하는데,
가장 처음 변수에 넣는 값을 초깃값, 초깃값을 넣는 과정을 초기화라고 한다.
초기화는 변수 선언 후 따로 할 수도 있고, 변수를 선언하고 동시에 초기화를 할 수도 있다.
변수를 선언하고 초기화하는 것은 변수 사용에 꼭 필요한 과정이다.
위와 같은 코드를 작성해 실행시킨다.
printf() 함수의 큰 따옴표(" ") 안에 넣은 %d는 정수형 값을 출력하라는 의미다.
쉼표(,) 다음에 있는 값이 %d의 자리에 출력되게 된다.
이때 %d를 서식 지정자라고 한다. 서식 지정자의 유형은 출력하는 값의 자료형에 따라 달라진다.
자료형 | 서식 지정자 | 설명 |
int | %d | 값이 정수일 때 |
float | %.nf | 값이 실수일 때, n은 출력할 소수점 이하 자릿수, n+1자리에서 반올림 |
double | %.nlf | 값이 실수일 때, n은 출력할 소수점 이하 자릿수, n+1자리에서 반올림 |
char | %c | 값이 문자일 때 |
%s | 값이 문자열일 때 |
따라서 실수형 변수는 다음과 같이 사용한다.
#include <stdio.h>
int main(void) {
float f = 46.5f;
printf("%f\n", f);
return 0;
}
불필요한 소수점 없이 원하는 자리까지만 보고 싶다면,
서식 지정자에서 출력 값의 자릿수를 지정하면 된다.
#include <stdio.h>
int main(void) {
float f = 46.5f;
printf("%.2f\n", f); // %.2f = 소숫점 이하 둘째 자리까지만 출력한다.
return 0;
}
또 다른 실수형으로는 float 이외에도 double이 있다.
double을 사용할 때에는 값 뒤에 f를 붙이지 않고, 서식 지정자에 f 대신 lf를 사용한다.
#include <stdio.h>
int main(void) {
float f = 46.5f;
printf("%.2f\n", f);
double d = 4.428;
printf("%.2lf\n", d);
return 0;
}
double의 값이 4.3으로 출력되었는데, f나 lf의 앞에 위치한 자릿수 n은
n+1번째 자리에서 반올림해 n번째 자리까지 출력하라는 의미이기 때문이다.
4.428의 8이 반올림되어 4.3으로 출력된 것!
지금까지 배운 변수에 대한 내용을 요약하자면 다음과 같다.
int 변수명 = 값; //정수형 변수 선언 및 초기화
printf("%d\n", 변수명); //정수형 변수의 값 출력하기
변수명 = 값; //변수의 값 바꾸기
/*-------------*/
float 변수명 = 값f; //float형의 변수에 값을 저장할 때는 뒤에 f를 붙여야 한다.
printf("%.nf\n", 변수명); //n+1 자리에서 반올림해 값을 출력한다.
double 변수명 = 값;
printf("%.nlf\n", 변수명) //n+1 자리에서 반올림해 값을 출력한다.
+)
float와 double은 둘 다 같은 실수형이지만, float는 변수에 값을 지정할 때 뒤에 f를 붙여야 하는데,
이는 float와 double 형에 할당되는 메모리의 크기가 다르기 때문이다.
float는 4바이트, double은 8바이트 만큼의 공간을 사용하기 때문에,
값에 f를 붙이지 않으면 값을 double로 인식하고 4바이트를 초과하는 값은 잘린다는 경고문을 출력한다.
상수常數는 값이 변하지 않는 값을 뜻한다.
상수로 한 번 선언하면 더 이상 변수의 값을 바꿀 수 없다.
상수를 만들기 위해서는 변수를 만들 때 앞에 const를 추가하면 된다.
또, 상수일 때는 변수 명을 대문자로 작성한다.
#include <stdio.h>
int main(void) {
int YEAR = 1972;
printf("C 언어가 발표된 연도: %d\n", YEAR);
return 0;
}
위의 코드를 실행하면 "C 언어가 발표된 연도: 1972"가 화면에 출력된다.
하지만 여기서 YEAR의 값을 1973으로 변경하는 문장을 추가하면,
C언어가 발표된 연도는 1973년으로 수정되어 출력된다.
이와 같이 바뀌어선 안 되는 값을 표현하기 위해 사용하는 것이 상수다.
#include <stdio.h>
int main(void) {
const int YEAR = 1972;
printf("C 언어가 발표된 연도: %d\n", YEAR);
return 0;
}
int 앞에 const를 추가해 YEAR를 상수로 선언했다.
이렇게 const를 넣으면 이 이후에 YEAR의 값을 바꾸는 코드를 추가해도
오류가 발생해 코드가 실행되지 않는다.
지금까지 배운 내용은 다음과 같다.
const 자료형 변수명(대문자) = 값; //상수의 생성
첫날보다 훨씬 많은 내용을 배웠다! +_+
외출 탓에 조금 늦게 공부를 시작했는데 역시 밤은 집중이 잘 안 되는 느낌
그래도 열심히 문제 풀이 하고 복습까지 하고 잘 생각…
내일부턴 다시 낮 시간에 힘내보자~~
오늘 공부 끝!
'Programming > C, C++' 카테고리의 다른 글
코딩 자율 학습단 6일차 - 조건문과 break (1) | 2024.06.30 |
---|---|
코딩 자율 학습단 5일차 - 이중 반복문 (0) | 2024.06.21 |
코딩 자율 학습단 4일차 - 반복문 (0) | 2024.06.21 |
코딩 자율 학습단 3일차 - 출력하기, 입력받기 (0) | 2024.06.20 |
코딩 자율 학습단 1일차 - 첫번째 C 프로그램 작성하기 (0) | 2024.06.17 |