• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

#define 과 변수선언이 위에있는 것은

21.01.22 00:42 작성 조회수 106

0

예제를 표현하기 위함인가요? 아니면 안에있으면 복잡해서그럴까요?

for (int a = 0; a < 5; a++)

{

for (char b = 'A'; b <= 75; b++)

printf("%c ", b);

printf("\n");

}

저는 이런식으로해봣는데 이러면 선생님한거와의 비교했을떄 불편함이뭘까요

답변 1

답변을 작성해보세요.

3

안소님의 프로필

안소

2021.01.22

안녕하세요.

질문자님처럼 하셔도 문제 없지만, 이런식으로 내부에 일일이 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 이라고 쓰는게 가독성도 좋구요.