#define 과 변수선언이 위에있는 것은
200
작성한 질문수 10
예제를 표현하기 위함인가요? 아니면 안에있으면 복잡해서그럴까요?
for (int a = 0; a < 5; a++)
{
for (char b = 'A'; b <= 75; b++)
printf("%c ", b);
printf("\n");
}
저는 이런식으로해봣는데 이러면 선생님한거와의 비교했을떄 불편함이뭘까요
답변 1
3
안녕하세요.
질문자님처럼 하셔도 문제 없지만, 이런식으로 내부에 일일이 75, 5 이런식의 하드코딩으로 숫자를 입력하게 되면 나중에 수정사항이 생길 때 불편합니다. 프로그램 코드가 작으면 상관없지만요!
프로그램 규모가 커지면 일일이 75로 입력했던 곳들 찾아서 전부 바꿔주고 하면 헷갈리기도 하고 실수 할 확률도 높아집니다. 행의 수를 바꾸고 싶은데 75, 5 등등 이런 숫자들만 보고서는 이게 내가 행의 수로 적었던 숫자인건가? 하고 헷갈릴 수도 있을테구요.
#define NUM_ROWS 5 라고 정의를 해놨다면 이 숫자를 바꾸고 싶을 때 #define NUM_ROWS 7 이런식으로 이곳의 값만 바꿔주면 수정이 아주 편리하겠죠. 아래 코드들에서 NUM_ROWS 라고 쓰인 곳들도 다 자동으로 7로 바뀌는 셈이 되니까요! 그리고 딱 봐도 NUM_ROWS 아 이건 행의 수를 나타내는거구나 하고 직관적으로 바로 알 수도 있으니 가독성도 좋아집니다.
예를 들어 프로그램 내에 공격력이라는 수치를 수정하고 싶다고 가정해봅시다. 만약 define 으로 하지 않고 그냥 공격력을 사용하는 코드 여러군데에 그냥 '100' 이라고 하드 코딩했다면, 나중에 공격력 수치를 찾고 일일이 수정해야하니 굉장히 불편하겠죠. 100만 봐서는 이게 공격력 수치로 설정했던 것이니 알 수 없으니 코드도 다시 읽어야 할테구요. 그러나 #define ATTACK 100 이런식으로 설정해놓고 공격력 부분을 다 ATTACK 으로 사용했다면 밑에 코드들은 수정할 필요 하나 없이 #define ATTACK 120 이렇게 이부분만 수정하면 되는 것입니다. 100이라고 쓰는 것보다 ATTACK 이라고 쓰는게 가독성도 좋구요.
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
50
3
main 함수에서 왜 int만 선언이 되는걸까요
1
54
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
53
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
46
1
프로토타입과 함수간의 인자 불일치
1
72
2
12.12 헤더 관련 질문
1
59
2
Visual Studio Community 2026 사용 문의
1
135
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
59
2
getchar(), putchar()
1
92
3
강의자리ㅛ
1
78
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
112
2
소스파일안에 여러 파일
1
75
2
F5와 F7의 차이
1
75
2
c = TWO * (a+b); 에서 a와 b는?
1
58
2
; 세미콜론을 붙이는 기준에 문의
1
68
1
Step over 기능 문의
1
52
2
2.6 강의 따옴표 출력 규칙 문의
1
74
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
60
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
64
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
53
2
11.5 코드 구현
1
67
2





