상세 컨텐츠

본문 제목

C언어 강좌 4강 상수

카테고리 없음

2020. 3. 16. 12:10

본문

여러분 안녕하세요!

 

오늘은 C언어 상수를 해볼 겁니다.

 

변수와 상수가 있는데

변수는 변하는 수

상수는 변하지 않는 수라고 하면 됩니다.

 

아래 이미지를 봅시다!

 

위 이미지는 변수입니다.

6행 변수 a를 선언하고

7행 a에 5를 저장을 하고

8행 출력을 합니다.

 

10행 a에 7를 저장을 하고

11행 출력을 합니다.

 

실행 결과

 

위에 있는것들은 변수 입니다.

 

상수 종류가 있는데 상수의 종류는 리터럴 상수와 심볼릭 상수가 있습니다.

 

변수에도 종류가 있습니다.

정수형 변수와 실수형 변수 입니다!!!

 

리터럴 상수: 글자 그대로 의미가 있어서 이름이 없는 상수 입니다.

심볼릭 상수: 상수를 기호화하여 변수처럼 이름을 지어 쓰는 상수 입니다.

 

리터럴 상수

리터럴 상수의 종류도 있는데

그 종류는 정수형 상수, 실수형 상수, 문자 상수, 문자열 상수가 있습니다.

 

정수형 상수

정수형 상수는 소수점이 포함되지 않은 상수를 정수형 상수라고 합니다.

 

c언어 에서 정수형 상수는 10진수, 8진수, 16진수의 형태로 표현합니다.

 

그러면 10진수 15

8진수 15

16진수 15를 어떻게 구분할 수 있을까요?

 

10진수는 그냥 15라고 하고

8진수는 015 라고 합니다. (0을 붙여야 합니다.)

16진수는 0x15 라고 합니다. (0x를 붙여야 합니다.)

 

그런데 10진수 15, 8진수 15, 16진수 15가 다 같은게 아닙니다.

 

10진수 15는 15고

8진수로는 10진수 15가  17이고

16진수는 10진수 15가 f입니다.

 

10진수는 0~9까지 입니다.

8진수는 0~7 입니다.

16진수는 0~9~a~f 입니다.

 

8진수 20을 10진수로 바꾼다면 16입니다.

 

16진수 20을 10진수로 바꾼다면 32입니다.

 

 

10진수 0 = 8진수 00 = 16진수 0x0

10진수 1 = 8진수 01 = 16진수 0x1

10진수 2 = 8진수 02 = 16진수 0x2

10진수 3 = 8진수 03 = 16진수 0x3

10진수 4 = 8진수 04 = 16진수 0x4

10진수 5 = 8진수 05 = 16진수 0x5

10진수 6 = 8진수 06 = 16진수 0x6

10진수 7 = 8진수 07 = 16진수 0x7

10진수 8 = 8진수 010 = 16진수 0x8

10진수 9 = 8진수 011 = 16진수 0x9

 

10진수 10 = 8진수 012 = 16진수 0xA

10진수 11 = 8진수 013 = 16진수 0xB

10진수 12 = 8진수 014 = 16진수 0xC

10진수 13 = 8진수 015 = 16진수 0xD

10진수 14 = 8진수 016 = 16진수 0xE

10진수 15 = 8진수 017 = 16진수 0xF

 

10진수 16 = 8진수 020 = 16진수 0x10

10진수 17 = 8진수 021 = 16진수 0x11

10진수 18 = 8진수 022 = 16진수 0x12

10진수 19 = 8진수 023 = 16진수 0x13

10진수 20 = 8진수 024 = 16진수 0x14

10진수 21 = 8진수 025 = 16진수 0x15

10진수 22 = 8진수 026 = 16진수 0x16

10진수 23 = 8진수 027 = 16진수 0x17

10진수 24 = 8진수 030 = 16진수 0x18

10진수 25 = 8진수 031 = 16진수 0x19

 

10진수 26 = 8진수 032 = 16진수 0x1A

10진수 27 = 8진수 033 = 16진수 0x1B

10진수 28 = 8진수 034 = 16진수 0x1C

10진수 29 = 8진수 035 = 16진수 0x1D

10진수 30 = 8진수 036 = 16진수 0x1E

10진수 31 = 8진수 037 = 16진수 0x1F

10진수 32 = 8진수 038 = 16진수 0x20

 

제가 위에  길게 써놨는데

 

이런걸 다 알 고 있 을 필 요 는 없 습 니 다 !

그냥

 

위에 이미지  처럼 코드를 작성을 해서 해보세요

 

저 위에 있는 글 말고

 

위 이미지 처럼 해도 됩니다.

 

 

실수형 상수

실수형 상수는 소수점이 포함된 상수를 실수형 상수라고 합니다.

 

실수형 상수는 123456.78와 같이 소수점이 포함하는 상수를 말합니다.

 

 

실행 결과

5행에서 6.6 ,5.4 6.6 + 5.4를 서식 문자 %lf로 출력 하고 있습니다.

실수형 상수를 printf() 함수로 출력을 할려면 %lf를 사용한다는 것을 알아 둡시다!!!!

 

 

문자 상수

문자 상수는 작은 따옴표로 묶은 문자 하나를 문자 상수라고 합니다.

 

문자 상수란 작은 따옴표 ( ' ' )로 묶은 문자 하나를 의미합니다.

예는 A, B, a, b, &, *, +, #긍과 같이 키보드로 표현 할 수 있는 영문자와 숫자, 특수 기호들입니다.

 

 

실행 결과

 

5행에서 알파벳 a, b, c를 서식 문자 %c로 출력하고 있습니다!

6행에서는 특수 기호 !, #, ^를 서식 문자 %c로 출력하고 있습니다!

 

ASCII 코드라는 것이 있는데

아스키 코드 65 ~ 90이 대문자 A ~ Z 입니다.

소문자로는 97 ~ 122이 a ~ z 입니다.

 

아스키 코드는 외울필요가 없습니다!

구글에다가 아스키 코드라고 검색만 해도 나옵니다!

 

 

실행 결과

문자열 상수

큰 따옴표로 묶은 하나 이상의 문자로 구성된 문자열을 문자열 상수라고 합니다.

 

문자열 상수는 큰 따옴표 ( " " )로 묶은 하나 이상의 문자로 구성된 문자열을 의미 합니다.

 

 

실행 결과

 

5행부터 8행까지 큰 따옴표 안에 있는 문자, 숫자, 문자열은 서식 문자

%s로 출력 가능한 문자열 상수인걸 기억하세요!

 

컴파일러는 큰 따옴표로 묶은 문자열로 묶은 문자열 상수를 저장할 때 문자열 상수

맨 마지막에 문자열의 끝을 알리는 종료 문자인 \0을 자동으로 추가 하는데

이것은 NULL 문자라고 합니다!!!!

 

 

심볼릭 상수

심볼릭 상수는 상수를 기호화하여 의미 있는 이름으로 지어서 쓰는 상수를 의미 합니다.

리터럴 상수와는 반대로 변수를 상수화하는 것입니다.

 

심볼릭 상수를 만드는 방법은 2가지 입니다.

1번째는 const 키워드를 이용하는 것이고

2번째는 매크로 상수를 이용하는 것입니다.

 

 

const 키워드 이용 하기

 

 

실행 결과

 

5행부터 7행에서 const 키워드를 이용하여

변수 a, b, c를 상수로 만듭니다.

이때부터 100을 a라 하고 10.123을 b라 하고 "hello"를 c라고 대신 쓰면 됩니다.

 

9행~11행 처럼 해놓고 주석을 제거를 해놓으면 오류가 발생 합니다.

 

 

#define 문을 이용하기

 

 

실행 결과

3행~5행까지에서 #define 문은 전처리기에서 수행되는 문장입니다.

전처리기는 컴파일러가 소스 파일을 컴파일하기 전에 먼저 수행되는데 이처럼

#define 문은 프로그램에서 여러 번 사용되는 상수 값을 매크로 상수로 정의해서 사용하게 합니다.

 

프로그래밍을 할 때 리터럴 상수 대신에 심볼릭 상수를 사용하는 이유는 무엇일까요?

10.123라는 리터럴 상수가 프로그램 내에서 60번 사용되고 있다가

20.231로 변경되어야 하는 경우에 60번 수정해야 하는 문제가 발생합니다.

얼마나 귀찮은 작업일까요?

 

만약 10.123와 같은 리터럴 실수형 상수를 심볼릭 상수로 정의해 놓았다면

const 키워드나 #define 문의 선언문만 한 번 고치면 됩니다.

얼마나 수정이 쉬운지 잘 알수 있습니다.

 

 

 

 

댓글 영역