생선이의 잡다한 블로그
C언어 강좌 4 - 변수로 값을 저장하자! (자료형 데이터형) 본문
안녕하세요 생선스프입니다~!
이번에는 변수에 값을 저장하여 사용하는법을 알아보려고 합니다
변수라는 것이 어디에 쓰일까요?
저희가 계산기를 만든다고 합니다
하지만 저희는 상대방이 어떤 숫자를 넣을줄알고 printf 에 미리 숫자를 넣어둘까요?
변수를 선언할떄는 자료형 변수이름 이 두가지가 들어갑니다
변수 이름을 지어줄떄는 몇가지 규칙이 있습니다
1. 영어, 숫자, _ (언더바) 를 이용하여 이름을 지어준다
2. 숫자로는 시작할 수 없다
3. C언어는 대소문자를 구별하는 언어이다
4. 공백은 사용할 수 없다
5. 예약어는 사용할 수 없다( printf 같은 이미 있는 이름은 사용할 수 없다)
이렇습니다!
그리고 변수의 이름은 알기쉽게 연관성이 있게 짓고 의미없는 이름은 지어주지 맙시다!
이제 자료형을 알아보겠습니다
자료형은 어떤 값을 저장할떄 형태는 어떤지, 크기는 어떤지를 보고 그 값에 적당한 자료형을 써주어야합니다
아래의 표를 참고하시면 됩니다!
정수 자료형 | 크기 | 값의 표현범위 | |
정수형 | char | 1바이트 | -128이상 +127이하 |
unsigned char | 0이상 (128+127)이하 | ||
short | 2바이트 | -32,768이상 +32,767이하 | |
unsigned short | 0이상 (32,768+32,767)이하 | ||
int | 4바이트 | -2,147,483,648이상 +2,147,483,647이하 | |
unsigned int | 0이상 (2,147,483,648 + 2,147,483,647)이하 | ||
long | 4바이트 | -2,147,483,648 이상 | |
unsigned long | 0이상 (2,147,483,648 + 2,147,483,647)이하 | ||
long long | 8바이트 | -9,223,372,036,854,775,808 이상 | |
unsigned long long | 0이상 (9,223,372,036,854,775,808 + 9,223,372,036,854,775,807)이하 |
여기서 char 는 정수를 저장하기위함이 아닌 단일문자를 저장하기 위한것입니다!
unsigned 는 부호가 없음을 의미합니다
short보다 int가 연산속도가 더 빠르므로 작은 수여도 int를 사용합니다
실수 자료형 | 크기 | 값의 표현범위 | |
실수형 | float | 4바이트 | ±3.4 x 10^-37 이상 ± 3.4 x 10^38 이하 |
double | 8바이트 | ±1.7 x 10^-307 이상 ± 3.4 x 10^308 이하 | |
long double | 8바이트 이상 | double 이상 |
이제 비주얼스튜디오를 키고 직접 해보죠!
우선 아래와 같이 적어 주겠습니다
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> void main() { int num1; int num2, num3; int num4 = 4, num5; num1 = 1; num2 = num3 = 3; printf("%d %d %d %d", num1, num2 ,num3, num4); printf("%d", num5); } | cs |
그리고 실행을 시켜보면..!
이렇게 num1 ~ num4 는 출력이 되지만 에러가 뜨며 num5가 출력이 되지 않습니다
왜일까요?
코드를 읽어보시면 num5만 숫자를 넣어주지 않았습니다
이를 변수를 초기화해주지 않았다고 표현합니다
초기화하지않은 변수에는 어떤값이 들어있을까요?
램은 여러 프로그램이 같이 사용하는 공간입니다(일반적인 변수 선언시 Stack 공간에 생기게 됩니다)
즉 다른프로그램이 사용하고 버린 공간을 내가 쓰게 될수도 있다는거죠
그러면 그 공간에는 쓰레기값이 들어있습니다
그래서 에러가 발생하게됩니다
반드시 변수를 사용할떄는 초기화를 해야합니다!
그럼 우선 num5에 값을 넣기는 귀찮으니 그냥 num5를 지우고 진행하죠
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> void main() { int num1; int num2, num3; int num4 = 4; num1 = 1; num2 = num3 = 3; printf("%d %d %d %d", num1, num2 ,num3, num4); } | cs |
C언어 강좌 3 - 출력을 해보자! printf puts
이제 설명을 하도록하겠습니다
int num1; |
위에서 말했듯이 자료형과 변수이름을 적어 선언을 합니다
int num2, num3; |
선언을 동시에 쉼표로 구분지어 여러개 할 수 있습니다
int num4 = 4; |
선언과 동시에 값을 넣어줄수 있습니다
num1 = 1; |
우항의 값을 좌항의 값에 넣습니다
num2 = num3 = 3; |
이렇습니다
이제 다음코드로 넘어가겠습니다
1 2 3 4 5 6 7 8 9 | #include <stdio.h> void main() { char ch1 = 'A'; char ch2 = 65; printf("%c %c", ch1, ch2); } | cs |
일단 코드는 이해가 되실겁니다
그리고 실행을 시키면
이렇게 뜨는것을 확인할 수 있습니다
이말은 즉 'A' 와 65 가 같다는 말인데 뭐가 같은걸까요?
A의 아스키코드 값이 65 입니다
아까 char 가 정수형이였습니다
즉 char 에는 아스키코드값이 들어가게 되는것이죠
아래 아스키코드표가 있습니다
여기서 외우셔야할건 두가지입니다
대문자 A 는 65이고 소문자 a 까지 32가 차이가납니다
숫자 0 의 시작은 48
이정도만 외우면 되겠네요!
이번 강좌는 여기까지만 하도록 하겠습니다!
다음강좌는 배열을 알아보도록하겠습니다
이상으로 강좌 마치도록 하겠습니다!
강좌 읽어주셔서 감사합니다
공감과 댓글은 생선에게 힘이됩니다!
'프로그래밍 > C언어 강좌' 카테고리의 다른 글
C언어 강좌 6 - 빌드에서 제외를 이용해 강좌를 쉽게 따라와보자! (0) | 2017.03.08 |
---|---|
C언어 강좌 5 - 귀찮으니 배열을 사용하자! 문자열 (1) | 2017.03.07 |
C언어 강좌 3 - 출력을 해보자! printf puts (2) | 2017.01.09 |
C언어 강좌 2 - 헤더파일이 무엇인가요? (10) | 2017.01.04 |
C언어 강좌 1 - 처음은 역시 "안녕 세상아!" (2) | 2017.01.02 |