C - 상수: 초보자 가이드
안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C 프로그래밍의 상수 세계로 들어가보겠습니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 중요한 개념을 안내해드리기 위해 여기 있습니다. 코드를 한 줄도 작성해본 적이 없으신 분들도 걱정 마세요 - 우리는 처음부터 단계별로 지식을 쌓아갈 것입니다. 여러분의 좋아하는 음료를 손에 쥐고 편안하게 앉아, 이 코딩 모험을 함께 시작해보세요!
상수는 무엇인가요?
이제 구체적인 내용으로 들어가기 전에 상수가 무엇인지 이해해보겠습니다. 프로그래밍에서 상수는 프로그램 실행 중 변하지 않는 값을 담는 컨테이너입니다. 이를 특별한 상자에 중요한 것을 넣고 잠그는 것처럼 생각해보세요 - 그 안에 들어가면 그대로 유지됩니다!
이제 C에서 상수를 정의하는 두 가지 주요 방법을 탐구해보겠습니다.
const
키워드를 사용하여 상수 정의
먼저 살펴볼 방법은 const
키워드를 사용하는 것입니다. 이는 유형 안전한(즉, 컴파일러가 데이터 유형을 확인해줍니다) 상수를 만드는 간단한 방법입니다.
다음은 그 방법입니다:
const int MAX_STUDENTS = 30;
const float PI = 3.14159;
const char GRADE_A = 'A';
이를 해부해보면:
-
const
키워드로 시작합니다. - 그런 다음 데이터 유형(
int
,float
,char
등)을 지정합니다. - 다음으로 상수의 이름을 지정합니다 (보통 ALL_CAPS로 하여 상수를 쉽게 식별할 수 있도록 합니다).
- 마지막으로 상수에 값을 할당합니다.
이제 이 상수를 프로그램에서 어떻게 사용할 수 있는지 보겠습니다:
#include <stdio.h>
int main() {
const int MAX_STUDENTS = 30;
int current_students = 28;
printf("The class can have a maximum of %d students.\n", MAX_STUDENTS);
printf("Currently, there are %d students in the class.\n", current_students);
if (current_students < MAX_STUDENTS) {
printf("There's room for %d more students!\n", MAX_STUDENTS - current_students);
} else {
printf("The class is full!");
}
return 0;
}
이 예제에서 우리는 MAX_STUDENTS
상수를 사용하여 수업에 더 많은 학생이 들어올 수 있는지 확인하고 있습니다. 상수를 사용하는 장점은 최대 수업 크기를 변경해야 할 때 한 곳에서만 변경하면 되기 때문입니다!
#define
지시자를 사용하여 상수 정의
이제 또 다른 방법을 살펴보겠습니다 - #define
프리프로세서 지시자를 사용하는 것입니다. 이 방법은 약간 다르고 자신만의 특이점이 있습니다.
다음은 문법입니다:
#define MAX_STUDENTS 30
#define PI 3.14159
#define GRADE_A 'A'
다음과 같은 몇 가지 점에 유의하세요:
- 데이터 유형을 지정하지 않습니다.
- 등호(=)를 사용하지 않습니다.
- 문장을 세미콜론(;)으로 끝내지 않습니다.
이제 이를 프로그램에서 어떻게 사용할 수 있는지 보겠습니다:
#include <stdio.h>
#define MAX_SCORE 100
#define PASSING_PERCENTAGE 60
int main() {
int student_score = 75;
float passing_score = (float)MAX_SCORE * PASSING_PERCENTAGE / 100;
printf("The maximum score is %d.\n", MAX_SCORE);
printf("The passing score is %.2f.\n", passing_score);
if (student_score >= passing_score) {
printf("Congratulations! You passed the test with a score of %d.\n", student_score);
} else {
printf("Unfortunately, you didn't pass. Your score was %d.\n", student_score);
}
return 0;
}
이 예제에서 우리는 상수를 사용하여 합격 점수를 계산하고 학생이 시험을 통과했는지 확인하고 있습니다. #define
상수는 컴파일 전에 그 값으로 치환되므로, 주의를 기울이지 않으면 예상치 못한 동작을 유발할 수 있습니다!
상수의 값을 변경하는 것
이제 흥미로운 부분으로 넘어가겠습니다. 저는 상수가 잠긴 상자라고 했죠? 대부분 그렇지만, 한 가지 예외가 있습니다.
const
로 정의된 상수는 진짜 상수입니다 - 설정한 후 값을 변경할 수 없습니다. 시도하면 컴파일러가 오류를 보여줍니다. 예를 들어:
const int MY_CONSTANT = 10;
MY_CONSTANT = 20; // 이는 컴파일러 오류를 발생시킵니다
그러나 #define
로 정의된 상수는 다릅니다. 이는 컴파일 전에 처리되므로, 코드에서 다시 정의할 수 있습니다. 하지만 이는 혼란과 버그를 유발할 수 있으므로 신중하게 사용해야 합니다!
#include <stdio.h>
#define MY_CONSTANT 10
int main() {
printf("MY_CONSTANT is %d\n", MY_CONSTANT);
#undef MY_CONSTANT
#define MY_CONSTANT 20
printf("MY_CONSTANT is now %d\n", MY_CONSTANT);
return 0;
}
이 프로그램은 다음과 같은 출력을 보여줍니다:
MY_CONSTANT is 10
MY_CONSTANT is now 20
이는 가능하지만, 코드를 이해하고 유지하기 어려워질 수 있으므로 일반적으로 권장되지 않습니다.
결론
상수는 C 프로그래밍에서 강력한 도구입니다. 상수를 사용하면 코드가 더 읽기 쉽고 유지하기 쉬워지며, 오류를 덜 일으킵니다. const
또는 #define
중 어느 것을 사용할지는 특정 요구에 따라 다르지만, 둘 다 C 프로그래머의 도구 상자에 자리잡고 있습니다.
기억하세요, 프로그래밍은 여정이며, 상수를 마스터하는 것은 그 여정의 한 단계입니다. 계속 연습하고, 호기심을 유지하며, 두려워하지 말고 실험해보세요. 얼마 지나지 않아 복잡한 프로그램을 쉽게 작성할 수 있을 것입니다!
여기 우리가 논의한 방법에 대한 빠른 참고 표입니다:
방법 | 문법 | 유형 확인 | 범위 | 다시 정의 가능 |
---|---|---|---|---|
const | const type NAME = value; |
예 | 블록 수준 | 아니요 |
#define | #define NAME value |
아니요 | 전역 | 예 |
미래의 프로그래머 여러분, 즐겁게 코딩하세요! 상수의 세계에서 변화는 유일한 상수입니다. (이게 이해되셨나요? 약간의 프로그래머 유머입니다!) ?
Credits: Image by storyset