"변수를 선언한다" : 메모리에 저장 공간을 확보한 뒤 해당 저장 공간에 이름을 붙힌다
int a
-> 정수를 저장할 공간을 a라고 이름 붙여 메모리에 4바이트를 할당하겠다고 컴파일러에 알려 주는 것 (임시 주소의 개념)
그렇다면 우리가 할당한 a라는 저장 공간에는 무엇이 들어 있을까?
-> 컴퓨터의 메모리 공간은 재활용되기 때문에 이전에 해당 공간을 차지했던 데이터(?) 값(?) 이 들어 있다. 그리고 이것을 쓰레기값이라고 한다.
쓰레기값은 오류를 불러올 수 있으므로 초기화 과정을 통해 해당 저장 공간에 우리가 원하는 값을 넣어 주어야 한다.
a = 10;
여기서 = 을 대입 연산자 라고 하며, 오른쪽 값을 왼쪽에 저장(할당)한다는 의미이다.
변수 선언과 대입 규칙
1) {}안에 변수 선언 시, 선언 위치부터 블록 끝까지 변수 사용 가능
2) 변수의 자료형이 같다면 동시에 둘 이상의 변수 선언 가능int a, b; int c = 1, d = 34;
3) 대입 연산자는 연산자 왼쪽의 변수에 오른쪽의 값을 저장
4) 변수는 대입 연산자 왼쪽에서는 저장 공간이 되고, 오른쪽에서는 값이 됨int a, b; a = 10; //a는 변수 b = a; //a는 10이라는 값
: 음수가 없는 데이터를 저장할 때 사용
-> 양수와 음수 둘 다 있을 때보다 두 배 더 큰 수까지 저장 가능
변환문자는 %u를 사용한다. (%u는 부호 비트를 고려하지 않고 모든 비트를 10진수로 바꾸는 변환 문자이다. 만약 %d를 사용한다면, %d는 부호 비트를 고려하여 변환하기 때문에 큰 수를 출력할 경우, 음수가 출력될 가능성이 있다.)
float(4 바이트), double(8 바이트), long double(8 바이트 이상)
-> 주로 double을 사용한다.
유효 숫자 개수: float(7), double(15), long double(15이상)
해당 자료형에 유효 숫자 개수를 넘어가는 실수 저장할 시, 유효 숫자 개수까지만 같은 값을 출력한다. 해당 개수가 넘어가면, 저장한 값과는 다른 값이 출력된다. 따라서 유효 숫자 개수를 생각하며 자료형을 지정해야 한다.
문자열은 char[] 에 저장한다. 컴파일러가 문자열의 끝에 \0을 자동으로 추가함으로 배열의 크기는 최소한 (문자열의 크기+1)은 되어야 한다.
변환 문자는 %s를 사용한다.
배열명은 주소 상수이므로 선언 이후에 대입 연산자를 통한 초기화가 불가능하다.
char배열에 새로운 문자열을 저장하려면?
"strcpy"함수를 사용하면 된다. 그렇지만 이 함수를 사용하려면 소스 코드에 string.h 헤더 파일을 포함시켜야 한다.
char fruit[20] = "strawberry";
strcpy(fruit, "banana");
const를 붙이면 이후에 값을 바꿀 수 없고, 상수처럼 사용 가능하다.
따라서 반드시 선언과 동시에 초기화해야 한다.