본문 바로가기

C언어

C언어 공부 - 상수와 변수

반응형

 

 

 

 

안녕하세요. 

D.U.T입니다.

클릭 & 방문해주셔서 감사합니다.

 

유튜브를 보다가 유익한 말이 있어 기록을 남깁니다. 

'시장의 공급과 수요가 내 연봉을 결정한다'

 

이 말을 듣고 프로그래밍 공부를 결심했습니다.

 

 

C언어 공부를 시작했고 공부한 내용을 정리하는 포스팅입니다. 

부족한 부분이 있을 수 있으니 참고하시기 바랍니다. 

 

 

 


 

■ 상수 ( Constant )

상수(Constant)는 변하지 않는 숫자를 의미한다. 항상 같은 수!

 

 

● 숫자형 상수 ( Numeric Constant )

숫자형 상수(Numeric constant)는 기본적인 형태의 상수이다. 정수형 상수와 실수형 상수로 나눈다.

숫자형 상수 
정수형 상수
( 1, 5, -2, 3, -5 )
실수형 상수
( 0.18, 34.53, -8.8 )

 

※ C언어 프로그램 사용 (예시)

( 정수형 상수 ) unsigned int number = 8899; 
( 실수형 상수 ) float p = 8.15;

 

앞에서는 모두 10진수로 정수형 상수를 표현하였다. C언어는 8진수, 10진수, 16진수 형식으로 모두 사용할 수 있다. 

 

▷ 8진수

8진수는 10진수와 구별하기 위해 숫자 앞에 숫자 0을 붙여서 사용한다. 

unsigned int number = 012;   /* 10진수 값은 10 */
unsinged int number2 = 024;   /* 10진수 값은 20 */

 

▷ 16진수

16진수는 다른 형식과 구별하기 위해 숫자 앞에 0X 또는 0x를 붙여서 사용한다.

unsigned int number = 0xa;   /* 10진수 값은 10 */
unsinged int number2 = 0X14;   /* 10진수 값은 20 */

 

※ 10진수, 16진수, 8진수 비교표 

10진수 1 2 3 4 5
16진수 1 2 3 4 5
8진수 1 2 3 4 5
10진수 6 7 8 9 10
16진수 6 7 8 9 A
8진수 6 7 10 11 12
10진수 11 12 13 14 15
16진수 B C D E F
8진수 13 14 15 16 17

개인적으로 16진수로 코드를 작성하는 것을 많이 봤다. 8진수 코드는 보지 못했는데 8진수는 어디에 쓰이는지 궁금하긴 하다. 

 

 

 

● 문자형 상수 ( Character Constant )

영문자 숫자 특수 문자
C 3 *

문자형 상수는 작은 따옴표( ' )를 사용하여 프로그램에서 문자를 표시한다. 

특수문자, 숫자, 영문자를 구분할 수 있다. 모두 작은 따옴표( ' )를 붙여서 사용하면 소문자, 대문자, 숫자, 특수 문자 등을 모두 표현할 수 있다. 

 

 

 

▷ C언어 프로그램에서 문자형 상수 사용 방법 

char lucky = 'C';   /* C는 아스키 값이 67이므로 67을 변수 lucky에 저장 */

 

 

 

● 문자열형 상수 ( Character-string Constant )

한 개 이상의 문자를 문자열이라고 한다. 문자열을 표시할 때는 큰따옴표 ( " ~~~ " )를 사용하면 된다. 

 

사용 예시)

"Nice~!"       "시장의 공급과 수요가 내 연봉을 결정"        "example~~~~"

 

앞 포스팅에서 배웠듯이 문자 하는 일반적으로 1바이트이다. 그래서 "Nice~!"를 입력하면 문자는 6개이므로 6바이트가 필요하다고 생각했지만 실제는 7바이트를 사용한다고 한다. 

그 이유는 문자열 마지막 자리에 비어있다라고 의미하는 0을 추가하기 때문이라고 한다. 

 

※ 실제 메모리 구성

1바이트 1바이트 1바이트 1바이트 1바이트 1바이트 1바이트
N i c e ~ ! 0
7바이트

 

 

 


( 200degrees @Pixabay )

 

 

■ 변수 ( Variable ) - 데이터 저장 공간

변수(Variable)는 프로그램 실행 중에 변하는 값을 의미! 

변수(Variable)는 사용자로부터 데이터를 받아서 처리하는 저장 공간을 뜻 함! 

 

 

● 변수 이름

항상 기억해야 한다. 메모리는 1바이트 단위로 주소(Address)를 구분한다. 프로그래머가 숫자로 구성된 메모리 주소를 하나하나 기억하기 어려우므로 쉽게 주소를 사용하기 위해 변수에 이름을 붙여서 사용한다. 

int name;  /* 4바이트 메모리 저장 공간을 메모리 주소 대신 name 변수 이름을 사용 */

사용한 변수 이름은 컴파일러가 코드를 변환하면서 메모리상 주소로 변경해준다. 

 

 

※ 변수 이름 사용 경우 주의사항!

변수 이름은 영문자(소문자, 대문자), 숫자, 밑줄( _ )을 조합하여 사용할 수 있다. 그리고 대문자, 소문자를 구별하므로 같은 이름이라도 소문자, 대문자 사용에 따라 서로 다른 이름으로 변수를 사용할 수 있다. 

하지만! 모두 숫자로 구성하거나 숫자로는 문자열을 시작하여 변수 이름을 만들 수 없다. 

 

바른 사용 예시)

nice, risk, total, mute,  ···
Nice, nice, NICE, nicE, NIce, ···      /* 대문자, 소문자 조합으로 다양한 변수 이름 가능 */

 

 

잘못된 사용 예시)

30000, 3_nice, 007, ···

변수 이름은 공백을 포함하여 사용할 수 없다. 

nice 3, total mute, ···

C언어 예약어 변수 이름은 사용할 수 없다. 

 int, char, float, ···

 

 

 

● 변수 선언

변수 선언은 메모리 저장 공간을 할당하는 것!

프로그램에서 필요한 정보를 저장하기 위한 메모리 저장 공간 확보 과정을 '변수 선언'이라고 한다.

unsinged int nice;
unsinged int nice ;
(자료형)
부호없는 4바이트 메모리 사용
(변수 이름)
확보한 메모리 공간 이름
(구분자)
C언어 명령어 구분

 

만약 같은 자료형을 사용할 경우에 쉼표( , )를 활용하여 한 줄로 여러개 변수 선언이 가능하다. 

unsinged int nice_1;
unsigned int nice_2;
unsigned int nice_3;

unsigned int nice_1, nice_2, nice_3;

동일한 변수 선언이다. 

 

 

 

 

● 변수 초기화

변수를 선언하면서 초기값을 넣어주는 것을 초기화라고 한다. 초기화 필요한 이유는 다음과 같다. 컴퓨터 메모리는 다양한 프로그램에 의해 공유해서 사용한다. 그러므로 앞 전에 다른 프로그램이 특정 메모리를 사용했다면 값이 남아 있을 수 있다. 메모리에 값이 남아 있으면 다음 프로그램에서는 그 메모리에 어떤 값이 저장되어 있는지 알 수 없다. 값을 알 수도 없으며 메모리가 청소되어 있지 않으면 쓰레기 값이라고 부르기 때문에 메모리 초기화는 필수이므로 변수 초기화가 필요하다. 

int nice;   /* nice 변수에 무슨 값이 저장되어 있는지 알 수 없음 */

 

무슨 값이 저장되어 있는지 알 수 없으므로 변수 초기화 필요!

int nice=0;    /* nice 변수에 0을 넣어 초기화 */

 

 

 


 

 

현업이 바쁘다 보니 오랜만에 업데이트합니다.

 

감사합니다. 

 




 

반응형

'C언어' 카테고리의 다른 글

C언어 공부 - 자료형 (메모리, 자료형 종류)  (0) 2022.03.13
C언어 공부 - 프로그래밍 기초  (0) 2022.03.03