C - 상수: 초보자 가이드

안녕하세요, 미래의 프로그래머 여러분! 오늘 우리는 C 프로그래밍의 상수 세계로 들어가보겠습니다. 여러분의 친절한 이웃 컴퓨터 선생님이자 저는 이 중요한 개념을 안내해드리기 위해 여기 있습니다. 코드를 한 줄도 작성해본 적이 없으신 분들도 걱정 마세요 - 우리는 처음부터 단계별로 지식을 쌓아갈 것입니다. 여러분의 좋아하는 음료를 손에 쥐고 편안하게 앉아, 이 코딩 모험을 함께 시작해보세요!

C - Constants

상수는 무엇인가요?

이제 구체적인 내용으로 들어가기 전에 상수가 무엇인지 이해해보겠습니다. 프로그래밍에서 상수는 프로그램 실행 중 변하지 않는 값을 담는 컨테이너입니다. 이를 특별한 상자에 중요한 것을 넣고 잠그는 것처럼 생각해보세요 - 그 안에 들어가면 그대로 유지됩니다!

이제 C에서 상수를 정의하는 두 가지 주요 방법을 탐구해보겠습니다.

const 키워드를 사용하여 상수 정의

먼저 살펴볼 방법은 const 키워드를 사용하는 것입니다. 이는 유형 안전한(즉, 컴파일러가 데이터 유형을 확인해줍니다) 상수를 만드는 간단한 방법입니다.

다음은 그 방법입니다:

const int MAX_STUDENTS = 30;
const float PI = 3.14159;
const char GRADE_A = 'A';

이를 해부해보면:

  1. const 키워드로 시작합니다.
  2. 그런 다음 데이터 유형(int, float, char 등)을 지정합니다.
  3. 다음으로 상수의 이름을 지정합니다 (보통 ALL_CAPS로 하여 상수를 쉽게 식별할 수 있도록 합니다).
  4. 마지막으로 상수에 값을 할당합니다.

이제 이 상수를 프로그램에서 어떻게 사용할 수 있는지 보겠습니다:

#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'

다음과 같은 몇 가지 점에 유의하세요:

  1. 데이터 유형을 지정하지 않습니다.
  2. 등호(=)를 사용하지 않습니다.
  3. 문장을 세미콜론(;)으로 끝내지 않습니다.

이제 이를 프로그램에서 어떻게 사용할 수 있는지 보겠습니다:

#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