안녕하세요. 파일입니다 원래는 scanf를 설명해야 하지만 scanf 에서 받는게 변수의 형식이므로 scanf 보다 변수를 먼저 설명해야 하는게 맞을거 같아서 변수편을 먼저 작성하겠습니다.
변수라... 감이오시나요? 변수란 이름 그대로 변하는 수입니다.
C언어에선 무언가를 저장하고 싶을때 사용하는 임시공간을 변수라고 합니다.
메모리 공간이라고도 해석할 수 있겠죠 ^^
상자에 내가 원하는 물건을 담듯 컴퓨터 메모리 공간에 내가 원하는 데이터를 넣는게 바로 변수입니다.
변수의 선언
#include <stdio.h>
int main(){
int a; //정수형의 변수 a선언
int b;
return 0;
}
#include <stdio.h>
int main(){
int a,b;
return 0;
}
변수를 선언할때는 자료형 이름 의 형태로 선언합니다
자료형은 변수가 담는 데이터의 형태 (정수, 실수 등) 이고 변수의 이름은 최대한 의미있게 짓는것이 좋습니다.
위와 같이 여러 방법으로 선언할 수 있습니다.
변수의 사용
#include <stdio.h>
int main(){
int a = 235; //a를 235로 초기화
int b = 400; //b를 400으로 초기화
printf("%d", a+b);
return 0;
}
우선 변수를 사용하기 전에는 반드시 변수를 초기화 해야합니다.
초기화란 변수의 값을 지정해주는 것을 의미합니다.
#include <stdio.h>
int main(){
int a;
printf("%d", a);
return 0;
}
0
--------------------------------
Process exited after 0.02046 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
초기화 하지 않고 변수를 C언어에서 출력하게 되면 이상한 값이나 컴파일러가 멈출 수 있습니다.
저는 0을 받았는데 아마 컴파일러에서 처리를 한듯싶습니다.
아무튼 초기화 하지 않은 변수를 여러개 만들고 출력해보면 이상한 값이나 컴파일러가 오류를 냅니다.
쓰레기값이 나오는 이유를 간략히 설명하자면 메모리에 변수가 할당되기 전까진 이상한 쓰레기값(모르는 값)이 들어있지만 변수의 선언이후 초기화 해줌으로써 메모리에 의미있는 값을 지정해주는겁니다.
#include <stdio.h>
int main(){
int a = 100;
float b = 0.135;
printf("%d %f \n", a, b);
a = 50;
b = 0.200 + a;
printf("%d %f", a, b);
}
100 0.135000
50 50.200001
--------------------------------
Process exited after 0.02044 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
변수는 가변성을 갖고 있기 때문에 실행 중간중에 값을 바꿀 수 있습니다.
또한 연산도 가능합니다.
(단 숫자는 숫자끼리)
그럼 값이 안바뀌는 변수를 만들 수 있을까 하는 생각이 듭니다.
네 있습니다. 상수라는 것인데요. 수학계산을 하다보면 파이(3.14) 라던지,
과학자들이 이미 정해준 값을 사용하는 경우가 있는데
이 상수와 거의 동일한 개념입니다 ^^ 이 부분은 추후에 설명하겠습니다.
#include <stdio.h>
int main(){
char a = 'A';
printf("%c \n", a);
printf("%c가 저장된 주소는 : %x", a, &a);
return 0;
}
A
A가 저장된 주소는 : 62fe1f
--------------------------------
Process exited after 0.02088 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
char 은 문자열을 나타낼 수 있는 자료형 입니다.
저번시간에 배운 printf 과 %c (문자 한개 출력) 를 이용하여 A라는 문자를 출력하고
이 변수가 저장된 메모리 주소를 출력했습니다.
변수의 메모리 주소를 출력하고 싶을땐 &변수이름 의 형태로 출력하고 16진수(%x)로 출력합니다.
변수의 선언규칙
#include <stdio.h>
int main(){
int Grout = 100;
int GrouT = 200;
printf("%d", Grout+GrouT);
}
300
--------------------------------
Process exited after 0.02035 seconds with return value 3
계속하려면 아무 키나 누르십시오 . . .
1. 변수는 대소문자를 구분한다
C언어에서는 변수 대소문자를 구분하므로 AAB 와 AAb 는 다른 변수입니다.
#include <stdio.h>
int main(){
char G!rout = 'A'; //특수문자 ! 사용
float float = 310.5567; //이미 사용중인 키워드
int no space = 50; //공백문자 포함
}
2. 변수에는 특수기호, 공백문자, 이미 사용중인 키워드를 사용하면 안된다
C언어에서는 특수기호 공백문자 , 이미사용중인 키워드를 사용하면 안됩니다
단 _ 는 허용 입니다. 대개 변수이름에 차별화를 두거나 공백을 표시하고 싶을때 사용합니다
이미 사용중인 키워드는 여러가지가 있는데 이걸 외울필요는 없고 썼는데 오류가 발생한다하면 다른이름으로 사용하시면 되겠습니다
#include <stdio.h>
int main(){
char 2019_tistory = "Hello World";
return 0;
}
또한 변수 첫자리에 숫자가 포함되서도 안됩니다.
#include <stdio.h>
int main(){
int a = 30;
printf("%d \n", a);
int b = 40;
printf("%d", b);
return 0;
}
30
40
--------------------------------
Process exited after 0.02159 seconds with return value 0
계속하려면 아무 키나 누르십시오 . . .
3. 변수의 선언은 되도록 맨 앞부분에 한다.
여기서 되도록이 붙은 이유는 원래 C99이전 표준에서의 C언어는 항상 선언을 코드 맨앞부분에 했어야 했고 아니면 오류가 발생하였습니다. 하지만 C99 부터 C++과 같이 변수가 처음 사용되기 전이라면 코드의 어느부분에 놓일 수 있게 변경되었습니다 하지만 가독성을 위해서라면 코드 맨앞부분에 정리해주는게 좋겠죠 ^^?
4. 변수의 선언은 의미있게 짓는다
이것은 규칙 까진 아니지만 변수의 이름은 의미있게 하는게 좋습니다.
예를 들면 탁자와 테이블의 개수를 표기할때 a 와 b를 이용하는것보다 table , chair 같은 의미있는 이름을 사용하는게
당연히 좋습니다.
오늘 내용은 최대한 간단하게 적어보려고 노력했습니다.
변수는 그렇게 어려운 개념이 아니기에 이해가 되셨으면 좋겠네요.
다음시간엔 진짜로 scanf( ) 를 통한 입력받기를 해보겠습니다 ^^ 감사합니다
'프로그래밍 강좌 > C' 카테고리의 다른 글
[C언어 강좌] #4-2 scanf와 printf에서 %f, %lf의 차이점 (0) | 2019.11.08 |
---|---|
[C언어 강좌] #4-1 scanf로 입력받기 (0) | 2019.11.08 |
[C언어 강좌] #2-2 printf 로 마음대로 출력하기 (0) | 2019.11.01 |
[C언어 강좌] #2-1 printf 로 마음대로 출력하기 (0) | 2019.10.31 |
[C언어 강좌] #1 개발환경 구축하기 (0) | 2019.10.29 |