다시 오신 걸 환영해요 이번 강의에서는 지속적인 줄에 관해 얘기할 거예요
문자열 문자 그대로 또는 문자열 상수는 큰 따옴표 안에 있죠
그럼 변수 자체는요? 어떻게 변수가 그 값을 바꾸지
못하도록 할 수 있을까요?
이건 상수라고 해요 따라서 여러분 프로그램에선
가끔 상수 문자열이 필요합니다
변수의 값이 절대 변하지 않아야 할 때요
예를 들어 어떤 계산의 원주를 만든다면
3을 하겠죠 지름은 1,4159배예요
3살요 14159는 상수고요 절대 안 변해요
원주율을 상징하죠
마법의 숫자를 사용하는 대신 변수를 사용해서
변수가 절대 변하지 않게 하는 거죠
그래서 매번 숫자를 입력하는
것보다 상징적인 상수를 사용하는 좋은 이유가 있어요
우선, 숫자가 아니라 이름이 많은 걸 말해주죠
빚은 0달러예요 주택 가치의 015배는
소득보다 훨씬 적어요 세금률에 가치의 곱이죠
그래서 절대 변하지 않는 숫자를 나타내는
변수 이름을 원하죠
롱 프로그램을 보면 두 번째
비전 버전의 의미가 훨씬 단순해요
코드를 보고 0을 이해하는 게 훨씬 쉬워요 015는 세율이에요
여러 곳에서 상수를 사용했는데 가치를
변경해야 한다면 프로그램 내
모든 곳에서 그 값을 변경해야 할 겁니다 상수를
정의한 한 곳에서만 변경하는 대신에요
아까 마법의 숫자라는 용어를 쓸 때 말씀드렸죠
그게 언급된 거예요
프로그램에서 사용되는 숫자는 변수에 저장되지 않습니다
보통 그 숫자를 생성해 상수에 넣는 게 최선이죠
여러 번 사용하고 변수가 바뀔 경우
한 번만 바꾸면 되니까요
사용하는 곳마다 바꿀 필요가 없어요
마법의 숫자는 피하고 상수를 사용하세요
c에서 상수를 정의하는 한 가지 방법은 사전 처리기
지시를 정의하는 거죠
이 프리프로세서 지시로 상수를 정의할 수 있어요
사실 몇몇 프로그램에서 사용했죠 설명하는 걸 도우려는 거예요
세율을 쓰고 싶은데 상수라면
그 앞에 우물 정자를 쓰면 돼요
전처리 명령인 건 알죠 우물 정자 때문에요
그런 다음 이름과 값을 말할 거예요
프로그램이 정리되면 0이 되죠 015는 세율을 사용한
모든 곳에서 대체될 겁니다 변수처럼요 하지만
사실 변수는 아니죠
거기에 다른 가치를 부여할 순 없어요
변수라면 데이터를 할당할 수 있지만
이 경우엔 프리프로세서라 안 돼요
사전 처리기 명령은 데이터를 할당할 수 없고 정의로
지정할 수 없다는 거죠
이 구문을 보세요 우물 정자와 정의된 키워드죠
그런 다음 이름을 짓죠
작전 요원은 안 써요
name 다음에 스페이스 그리고 값이요
그 정의에 값을 할당하려면 공간만 있으면 돼요
끝에 세미콜론이 없어요 성명서가 아니에요 아주 구체적이에요
전처리장치에서 시간 치환이 컴파일
되고 있어요 컴파일러가 기억하기 전에 전처리 장치가 실행되죠
Prerocessor가 실행되면 캐리 루트가 정의되는 걸 보게 되죠 그럼 세율을 보는 곳마다
0을 넣죠 컴파일러에게 015요
정의문은 프로그램 어디서든 나올 수 있어요
국지적 정의라는 건 없어요 정의만 내리면 누구나
쓸 수 있어요
모범 사례나 규칙은 보통 정의문을 프로그램의
시작이나 include 파일 안에
넣는 겁니다 하나 이상의 소스 파일을 공유하고
싶다면요 하지만 그럴 필요는 없죠
프리프로세서에서 동작하기 때문에
어떤 범위도 없어요 로컬, 글로벌도 없죠
아무 데나 놔도 돼요 프로그램 어디서든 볼 수 있어요 정의되기
전에 사용되고 있더라도요
정의된 성명도 아주 좋습니다 여러분의 프로그램을 보다 휴대 가능하게 해주거든요
때때로 정의문을 사용해 실행 중인 특정 컴퓨터와 관련시킬 수 있죠 프로그램이
실행 중일 때요 그런 값을 얻게 돼요
정의된 구문은 문자열과 문자열 상수에 대해서도 사용될 수 있습니다
숫자만이 아니라요 우리가 이런 걸 하고 싶었다면 아무 문제 없었을 거예요
하나의 인용구 안에 한 글자만 넣으면 되죠
전체 문자열 리터럴을 입력하고 싶다면
큰 따옴표를 쓰세요 이 oops가 하는 일이 그거예요
상수를 만드는 또 다른 방법은 최근의
메커니즘이죠 C90은 상수 수식어를 제공하는
또 다른 방법을 추가했어요
상수 키워드도 사용할 수 있어요 변수에 대한 선언을 상수에 대한 선언으로 변환하기 위해서요
이건 그 변수를 절대 바꿀 수 없게 하죠 여러분이 할 일은 컨스트라고 한 다음 data
type 이름을 입력하고 변수 이름을 입력하는 거예요
이 예제에서 이게 하는 일은 달이 12개의 상징적인 상수가 되는 거죠
그걸 변수라고 부르진 않아요 변수가 변할 수
있으니까요 그래서 변수죠
상수나 변수가 있는데 달의
상수는 변수가 아니고 바뀌지도 않아요
몇 달이 읽기 전용 값이 돼요
달을 표시해서 계산할 수 있어요 달의 가치를 바꿀 순 없어요
따라서 상수는 데이터가 변하는 걸 원치 않을 때 중요해요
마법의 숫자도 대체할 수 있고요
Conster는 새로운 접근법으로 정의하는 것보다 더 유연하죠
형식을 선언하게 해주죠
프로그램의 어느 부분이 상수를 사용할
수 있는지도 더 잘 통제하죠
할 수 있을 때마다 상수를 사용해야 해요 많은 프로그램이 정의된
걸 보게 될 겁니다 그게 첫 번째 메커니즘이니까요
상수를 생성하는 세 번째 방법은 열거형을
이용하는 거죠 이눔에 대해 얘기했죠?
Enums는 자신만의 변수 유형을 만들고
관련된 특정 데이터만 갖는 방법이죠 이눔스의 가치는 바꿀 수 없어요
열거형을 정의하면 그런 값이 있어야 해요
다른 가치가 있을 수 있지만 상징적인
상수를 만드는 하나의 방법이에요 완전한 방법은 아니지만 일종의 방법이죠
또한 문자 배열을 초기화해 상수로 선언할 수 있어요 표준 메시지를
처리하는 좋은 방법이죠
만약 char message가 세상의 종말과 같다고 하면 그
메시지가 상수로 선언되고 프로그램 내에서 명시적으로 수정되는
것을 막을 수 있어요. str 복사를 해서 메시지를 수정하려고 시도하면
컴파일러로부터의 오류 메시지가 나올 거예요
이제 이걸 표준 메시지에 사용할 수 있습니다 프로그램의
다양한 부분에 출력으로 표시될 수 있는 거죠
표준 메시지를 정의하는 기술은 제가 말씀드린 것처럼 여러
곳에서 사용된다면 특히 유용하죠
프로그램의 다른 부분에서는 그런 상수의 돌발적인 수정을 방지하죠
마법 숫자처럼요
그래서 상수를 여러분 프로그램에서
사용하길 원하죠 그걸 사용하는 두 가지 방법이 있어요
정의와 상수 키워드를 이용하는 거죠
주목해 주세요
다음 예제에서 보실지도 모르겠네요
고마워요