본문 바로가기

프로그래밍 언어/C 언어

C언어 독학 2일차~!! 20180524

오늘은 좀 빠른 공부? 새벽 공부충이 안 되었다. ㅎ헤헿 하지만 오늘 배운 거 넘나 많은 것....


º 변수와 변수의 쓰임


변수(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