오늘은 좀 빠른 공부? 새벽 공부충이 안 되었다. ㅎ헤헿 하지만 오늘 배운 거 넘나 많은 것....
º 변수와 변수의 쓰임
변수(Variables)란 프로그램이 실행되는 동안에 언제든지 저장된 값이 변경될 수 있는 공간을 의미한다.
상수(Coustants)란 한 번 정해지면 값을 변경할 필요가 없는 데이터를 의미한다.
ex) 두 점 간의 거리를 나타내는 distance는 변수로 프로그램이 실행되는 도중에 변경이 가능하지만, 원주율 3.141592는 프로그램에 저장되어 변경할 필요가 없는 데이터이다.
<소스를 만들기 전 기본틀>
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. return 0;
6. }
º 변수의 크기
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x;
6. x = 5;
7. printf("%d, x");
8. return 0;
9. }
을 입력하고 f11을 눌러 실행시키면 5라는 값이 나온다.
5라는 값이 왜 나왔는지 설명을 좀 하자면, int는 정수를 의미한다 그러므로 정수인 x 값을 출력시키고 %d는 이 자리에 int값이 들어온다는 뜻으로 그 뒤에 콤마 x는 %d 안에 x라는 값이 들어간다는 것을 의미한다.
여기서 더 심화적으로 들어가
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x;
6. x = 5;
7. printf("%d, x");
8. printf("변수 x의 메모리 크기는 %d입니다.", sizeof(x));
9. return 0;
10. }
여기서 새로운 언어는 sizeof(x)일 것이다. 이 sizeof는 기본적인 함수 중 하나로 변수의 메모리 크기를 알려주는 함수이며 이 값은 4바이트이다.
그래서 프로그램을 실행시키면 4라고 뜬다.
º 다른 자료형 출력
(역슬래시는 \)
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x = 50;
6. float y = 123456789.123456789;
7. printf("x = %d/n", x);
8. printf("y = %2f/n", y);
9. return 0;
10. }
float는 실수를 표현할 수 있는 자료형이다. 하지만 float는 4바이트로 저렇게 큰 숫자는 의미없는 값이 나오게 된다.
*/n은 줄바꿈 즉 enter를 의미
*%2f은 실수를 출력할 때 소수점 2자리수까지 출력하라는 의미를 가짐.
*%d는 int형을 출력할 때 쓰임.
그래서 여기서 저 float를 커버해 줄 수 있는 언어로 double이 있다. double은 8바이트로 float이 출력하지 못하는 값까지 출력이 가능하다. 그래서 식을 약간 고쳐 나타내면
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x = 50;
6. float y = 123456789.123456789;
7. double z = 123456789.123456789;
8. printf("x = %d/n", x);
9. printf("y = %2f/n", y);
10. printf("z = %2f/n", z);
11. return 0;
12. }
이런 식으로 원하던 값이 나오게 된다.
ºOverflow(오버플로우)
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x = INT_MAX;
6. printf("int의 최댓값 x는 %d입니다./n", x);
7. return 0;
8. }
INT_MAX라는 언어는 int의 최댓값을 의미하며 약 20억이 나온다, 하지만 저렇게 식을 나열하면 오류가 뜨는데 밑에 오류난 이유를 살펴보면 INT_MAX의 값이 없다고 뜬다. 여기서 #include <limits.h>라는 라이브러리를 하나 더 추가해 식을 다시 작성해 보자.
1. #include <stdio.h>
2. #include <limits.h>
3.
4. int main(void)
5. {
6. int x = INT_MAX;
7. printf("int의 최댓값 x는 %d입니다./n", x);
8. return 0;
9. }
이렇게 최댓값이 나오게 됩니다. 여기서 저 라이브러리는 한계값을 나타내주는 limits.h이다.
여기서 하나 더 +1을 해 최댓값을 넘어보면 어떻게 될까 실험해 보자.
1. #include <stdio.h>
2. #include <limits.h>
3.
4. int main(void)
5. {
6. int x = INT_MAX;
7. printf("int의 최댓값 x는 %d입니다./n", x);
8. printf("x + 1은 %d입니다./n, x + 1);
9. return 0;
10. }
최댓값을 넘어버리면 한 바퀴 돌아 int가 가질 수 있는 최솟값이 나오게 된다. 이런 경우를 overflow라고 한다.
º 2개의 변수와 사칙연산
1. #include <stdio.h>
2.
3. int main(void)
4. {
5. int x = 10;
6. int y = 20;
7. printf("x = %d입니다./n", x);
8. printf("y = %d입니다./n", y);
9. printf("x + y = %d입니다./n", x + y);
10. printf("x - y = %d입니다./n", x - y);
11. printf("x * y = %d입니다./n", x * y);
12. printf("x / y = %d입니다./n", x / y);
13. return 0;
14. }
이렇게 사칙연산의 식을 늘어놔 계산을 하게 되면
이러한 값이 나오는데 여기서 중요한 부분은 x / y을 잘 보시면 값이 0인 것을 알 수 있다. 이런 거와 같이 int 형에서 나누기를 하게 되면 몫의 값만 나오게 되는 것을 알 수 있다.
'프로그래밍 언어 > C 언어' 카테고리의 다른 글
C언어 독학 6일차! (0) | 2018.06.01 |
---|---|
C언어 5일차지롱 ㅎㅅㅎ (0) | 2018.05.31 |
C언어 독학 4일차 ㅎㅅㅎ (0) | 2018.05.30 |
C언어 독학 3일차ㅏ~ (0) | 2018.05.28 |
c 언어 독학 1일차!!! 20180523 (0) | 2018.05.24 |