변수와 자료형.
메모리를 알면 변수가 보인다.
1)메모리는 비트단위로 구성되어 있다.
128MB램=131,072KB(128X1024)
131,072KB=134,217,728 Byte
1 Byte=8 Bit
1KB = 1024 Byte
1MB = 1024 KB
128MB = 1,073,741,824 Bit
2)데이터의 종류에 따라 메모리를 차지하는 크기가 다르다.
>> 메모리의 최소단위가 비트이며 모든 데이터는 비트단위로 처리된다.
물론 모든 데이터가 1비트씩 공간을 차지하는 것은 아니다.
영문은 1바이트 = 8비트
한글은 2바이트 = 16비트
필요한 공간의 크기는 메모리에 저장되는 값이 숫자인지 문자인지 등에 따라
프로그래밍 언어의 컴파일러와 사용하는 운영체제에 미리 정의되어 있고,
프로그래머는 처리할 데이터의 종류가 무엇인지를 컴퓨터에게 알려주기만 하면
된다. 이러한 메모리의 저장 공간(혹은 저장단위)을 자료형이라고 한다.
3)변수는 메모리 공간
새로운 데이터를 저장할 때마다 데이터 저장공간의 크기나 위치가 항상 바뀌게
된다. 데이터의 저장 공간을 변수라고 부르는 것은 이 때문이다,
변수 정의 변수 선언
C프로그램에서는 변수를 사용하기 정에 위와 같이 반드시 변수를 정의 해야하며
변수를 선언한 후에는 변수 안의 값은 변할 수 있지만 자료형은 변하지 못한다.
변수 이름을 짓는 규칙
1)영문자, 숫자, 밑줄을 사용할 수 있다.
2)변수 이름의 첫글자는 밑줄이나 영문자 이어야 한다.
3)밑줄을 제외한 특수문자는 사용할 수 없다.
4)키워드는 사용할 수 없다.
변수의 초기화
변수를 정의하고 나서는 되도록이면 변수의 초기화를 해주는 것이 좋다.
그래야 변수 안에 있는 쓰래기값들을 지울 수 있기 때문이다.
화면 캡처: 2010-05-16, 오후 11:43
화면 캡처: 2010-05-16, 오후 11:43
자료형= 데이터를 저장하는 공간
메모리를 잘 사용하면, 즉 프로그램을 만들 때 프로그램이 메모리를 효율적으로 사용하게끔
만들면 같은 기능의 프로그램이라도 속도와 안전성 면에서 더욱 뛰어난 프로그램이 된다.
그 원리는 데이터의 종류에 따라서 사용하는 메모리 공간에 차이가 난다는 점을 이용하는
것. 즉 데이터의 종류에 따라 메모리 공간이 낭비되지 않도록 적절하게 지정해 주는 것.
사용할 데이터의 종류에 따라 메모리 공간, 즉 변수의 크기를 적절하게 설정해 주는 것을
자료형이라고 함.
자료형이란 효율적인 프로그래밍을 위해 미리 정의해 둔 메모리의 저장 공간.
변수의 모양을 지정하는 것이 자료형인 것 같음.
1바이트를 사용하는 char
4바이트를 사용하는 int
Char는 2에서 8승해서 256가지를 표현할 수 있음. 문자를 츙분히 표현할 수 있는 그릇.
Int는 2에 8승의 4배 즉 32비트 고로 40억 약간 넘는 수가 된다. Char에 비하면 엄청 큰 그릇.
Sizeof() >>>데이터의 크기를 재는 함수.
화면 캡처: 2010-05-17, 오후 8:29
화면 캡처: 2010-05-17, 오후 8:29
자료형의 종류.
정수형은 부호를 포함하고 있는 정수형과 부호를 사용하지 않는 정수형으로 나뉜다.
Int , unsigned int
1바이트의 최소값은 -128 >>>> 10000000(이진수)
1바이트의 최대값은 127>>>>>01111111(이진수)
최소값에서 -1 빼면 -129가 아니라 127이 된다.
- 정수형의 변종- short형과 long형.
Short(2바이트) < int(4바이트) <= long(32비트 컴퓨터, 4바이트))
- 실수형
소수점 아래 자릿수의 데이터를 처리하는데 유용
정밀도: float < double (2배)
화면 캡처: 2010-05-17, 오후 11:59
화면 캡처: 2010-05-17, 오후 11:59
Float형은 소수점이하 6자리까지의 정확도만 가지고 있으므로 그 이상의 소수점을 보기
위해서는 double을 사용해야 한다.
화면 캡처: 2010-05-18, 오전 12:07
화면 캡처: 2010-05-18, 오전 12:07
2번째 부터 소수점의 값이 둘 다 다른 것은 float이 double보다 정확도가 떨어지기 때문이다.
Double의 정확도는 16자리까지이다.
- 문자형
C언의 문자형의 특징은 문자형 범위 안의 수 만큼 정수값의 표현이 가능하다.
-128 ~ 127까지나 unsigned char형의 0~255 이하의 양수값도 저장 및 표시 가능하다.
화면 캡처: 2010-05-18, 오전 12:23
화면 캡처: 2010-05-18, 오전 12:23
%c 는 문자로 표현하라는 말이므로 printf의 첫번째 줄은 그대로 A가 출력됨, 다음줄에 대문자 A에
해당하는 ASCII코드에 해당하는 숫자 65다. 그리고 65를 16진수로 바꾼 수는 41이다.
- 상수
화면 캡처: 2010-05-19, 오전 2:46
화면 캡처: 2010-05-19, 오전 2:47
>>배열을 이용한 국어 성적의 총점과 평균을 구하는 식이다. 하지만 변경 사항이 있을 경우 코드전체를
수정해 줘야하는 일이 있다. 하지만 상수를 사용해서 코드를 작성할 경우에는 그 상수 부분만 수정해 주면 되므로 간단하게 수정할 수 있다.
화면 캡처: 2010-05-19, 오전 3:05
화면 캡처: 2010-05-19, 오전 3:05
- 제어문 - if문 , for문 , while문, switch문
For(제어 변수 초기화 ; 제어 조건 검사 ; 제어 변수 변화)
{
실행코드
}
EX>
For( i= 0 ; i < MAX_PERSON ; i++)
Printf("%d번째 학생의 국어 성적 : %d\n" , i+1 , Person[i});
}
- 배열은 포인터와 함께 C언어에서 자주 사용되는 개념. 간단히 말해 연속된 데이터르 저장해두는 변수.
처음에 이게 뭘 말하는지 잘 몰랐는데 비슷한 변수를 계속 선언하기 귀찮아서 만든 것 같음.
다이어리에 전화번호 적는 종이처럼 같은 자료형을 갖는 데이터들을 연속해서 저장해 두는 공간을 의미한다. Int Person[3]; >>>Person이라는 이름으로 정수형 데이터를 3개 생성하자라는 말.
- 상수 사용방법
1)
#define 상수이름 상수값
#define AGE 33
컴파일러 입장에서는 상수가 아니라 일반 숫자나 문자처럼 인식한다.
2)
Const 자료형 상수이름 = 상수값
Const char MyGrade = 'A'
컴파일러가 변경되지 못하는 변수로 인식한다.
- "a" - 문자열 상수
'a' - 문자 상수
- #define 문을 이용해서 상수를 정의했을 때 상수값을 연산하는 경우에는 괄호를 사용하면 정의가 명확해진다. 괄호를 하지 않을 경우에는 사칙연산의 우선순위에 따라 계산결과가 다른 값이 나올 수도 있다.
- 원의 반지름을 입력받아 넓이와 둘레를 구하는 프로그램.
- 약수를 구하는 프로그램.
변수를 2개 선언한다. Data는 약수를 구할 값을 입력 받는 변수이고 i는 약수를 구하는 값을 나누는 변수이다. Scanf를 사용해서 10진수로 값을 읽어서 data 변수 자리에 집어 넣는다.
반복문 for를 이용해서 i가 1부터 서서히 증가되어 가고 값이 data보다는 적을 때 data를 i로 나누어서 값이 0이 되면 반복해서 출력해라.
앞의 문제를 약간 확장한 문제.
Data를 두 개로 받아서 두 data 중에서 큰 수를 판단한다. 그 다음에 변수 i에 반복문을 걸어서 둘 중에 큰 수 보다 같거나 작을 때까지 계석 더해간다. 반복문을 해나가는 중에 2개의 조건문을 건다. 하나는 두 데이터를 나누었을 때 둘 다 0이되면 출력하라는 조건문이고 , 다른 하나는 i가 2개의 데이터 중에서 하나의 값과 동일해졌을 경우에는 반복문을 break하라는 명령이다.
- 최대공약수를 구하는 프로그램.
Max의 설정이 신기했던 코드다.
반복문이 계속 돌다가 마지막 값. 즉 현재의 값이 저장되고 그것을 변수로 지정해서 출력함.
아직 확실히 감이 안오지만 그냥 외우면 될 것 같음.
음~~ 이렇게 사용하는구나 하면서..
'About 프로그래밍!!! > C언어 무따기 정리' 카테고리의 다른 글
[무따기 C언어]구조체 (0) | 2010.06.26 |
---|---|
[무따기C언어] 9과(포인터의 이해) (0) | 2010.05.26 |
[무따기C언어] 5과 연산자 (0) | 2010.05.25 |
[무따기C언어] 3과(프로그램의 구성요소와 프로그래밍 규칙 (0) | 2010.05.12 |
[무따기C언어] 2과(하나의 프로그램이 실행되기까지) (0) | 2010.05.12 |