C Language

C언어 변수에 대해 학습하기 (2)

567Rabbit 2024. 6. 12. 21:21

https://codebunny99.tistory.com/162

 

C언어 변수에 대해 학습하기

변수란 ?  - 프로그램이 사용하는 데이터를 일시적으로 저장할 목적으로 사용하는 메모리 공간이다.- 실행 도중에 값을 변경할 수 있다.  변수는 왜 필요한가? - 데이터가 입력되면 어딘가에

codebunny99.tistory.com

 

 

부호 없는 정수( 양수, 절댓값만 존재한다.)  - unsigned를 붙이면 메모리가 차지하는 용량이 줄어든다.

 

unsigned short

unsigned int

unsigned long

unsigned long long

 

 

 

 

상수를 type으로 저장하고 싶을 때?

 

ex)

sum = 123L;  => long type으로 선언한 것이다.

 

<정수타입>

  • L 또는 l: long
  • LL 또는 ll: long long
  • U 또는 u: unsigned int
  • UL, Lu, ul, lu, LU, lU, Ul, uL: unsigned long
  • ULL, ull, LLU, llu: unsigned long long

 

<실수타입>

  • F 또는 f: float
  • L 또는 l: long double

 

 

 

 

 

변수의 종류(data type) = 자료형  ( 보통 4바이트 ) 

 

- 정수형 ( short, int, long, long long ) 2, 4, 8, 8 byte 

- 실수형 ( float, double, long double ) 4, 8, 8 byte

- 문자형 ( char ) 1 byte

 

** 변수는 사용하기 전에 초기화해야 한다.

 

ex)

sum = 0;  (변수 초기화 해야함 !!!)

 

scanf("%d %d %d", &x, &y, &z);

 

sum += x;

sum += y;

sum += z;

 

 

 

 

오버플로우(overflow) 

 

: 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 문제가 발생하는 것을 말한다.

: 16바이트 짜리를 4바이트로 저장하려고 하면, 원하는 데이터로 저장되지 않고 데이터가 다른 값으로 저장되는 

  오버플로우 문제가 발생한다.

 

 

 

 

10진법, 8진법, 16진법

 

2진수 (중요) 10진수 8진수 16진수 (중요)
0 0 00 0x0
1 1 01 0x1
10 2 02 0x2
11 3 03 0x3
100 4 04 0x4
101 5 05 0x5
110 6 06 0x6
111 7 07 0x7
1000 8 010 0x8
1001 9 011 0x9
1010 10 012 0xa
1011 11 013 0xb
1100 12 014 0xc
1101 13 015 0xd
1110 14 016 0xe
1111 15 017 0xf
10000 16 020 0x10
10001 17 021 0x11
10010 18 022 0x12

 

 

int x = 10;  // 10은 10진수이고 int형이고 값은 십진수로 10이다

int y = 010; // 010은 8진수이고 int형이고 값은 십진수로 8이다

int z = 0x10 // 0x10은 16진수이고 int형이고 값은 십진수로 16이다

 

 

 

 

 

기호 상수(symbolic constant)

 

: 기호를 이용하여 상수를 표현한 것이다

ex)

PI = 3.14...

#include <stdio.h>
#define TAX_RATE 0.2  // define문을 매크로라고 한다. 

// 밑에 MONTHS보다 define문으로 더 많이 사용함

int main(void)
{
	const int MONTHS = 12;
    int m_salary, y_salary;
    
    printf("월급을 입력하세요")
    scanf("%d", &m_salary);
    y_salary = MONTHS * m_salary;
    
    printf("연봉은 %d입니다", y_salary);
    printf("연봉은 %f입니다", y_salary*TAX_RATE);
    
    return 0;
}

 

 

 

 

실수를 표현하는 방법

 

 

1. 고정 소수점 방식

: 정수부분 + 소수부분

 

ex) 85.125 = 85(정수부분) + 0.125(소수부분) 으로 나눈다.

 

 

2. 부동 소수점 방식

- 표현할 수 있는 범위가 대폭 늘어난다.

 

 

 

 

부동 소수점 상수

 

실수 지수 표기법 의미
123.45 1.2345e2 1.2345 x 10^2
12345.0 1.2345e4 1.2345 x 10^4
0.000023 2.3e-5 2.3 x 10^-5
2,000,000,000 2.0e9 2.0 x 10^9

 

 

 

 

 

아스키 코드표

 

- 문자형을 mapping 시켜놓은 표이고, 컴퓨터는 2진수로 읽는다.

 

#include <stdio.h>

int main(void)
{
	char code1 = 'A'
    char code2 = 65;

    printf( "code1 = %c\n", code1 );
    printf( "code2 = %c\n", code2 );

    // 출력결과 둘 다 "A"로 출력된다.
    // code1 = A
    // code2 = A
}