C에서는 수를 정의 하거나, 값을 저장할 수 있는 기능을 제공한다.

 C에서는 수를 정의하는 것으로는 매크로라는 것으로

 '#define'을 사용한다.

1
2
3
 
#define PI 3.14
#define POW(x) ((x)*(x))
cs

 

이렇게 사용이 가능하다.

PI는 3.14라는 상수를 정의해주고, POW라는 것은 제곱을 표현하게 된다.

 

매크로는 특정 문자을 복사해서 덮어 씌우는 것으로 다음과 적용하는 것과 동일하게 할 수 있다.

 

1
2
3
4
5
6
7
8
#define PI 3.14
 
int main(int argc, char** argv){
    3.14+1;
    PI+1;
 
    return 0;
}
cs

 

3.14+1과 PI+1은 동일한 결과물을 가진다.

그렇다면, 매크로를 사용하는 이유가 무엇일까?

예을 들어서 (x+1)(x+2)...(x+100)이런식의 글을 작성되어 있다고 한다면,

x = 1일때, (1+1)(1+2)...(1+100)이렇게 가능하듯이.

#define X라는 것을 정의 해놓는다고 한다면,

(X+1)(X+2)...(X+100)이렇게 되었을때,

#define X 1

 

이렇게 하면, X=1일때 이런식으로 선언해서 사용할 수 있게 되는 것이다.

즉, 반복적으로 사용될 '상수'를 정의내려서 적용할 수 있다.

반대로 특정 연산을 정의 내려서 처리할 수 있다.

위에 작성한

#define POW(x)가 그것이다.

여기서 POW(x)는 '매크로 함수'라고 칭하며, 함수처럼 x라는 매개 변수를 받아서 '연산'을 복사한다.

 

단순한 연산이지만 자주 사용될 '연산'은 '매크로 함수'를 사용해서 컴파일러가 자동으로 복사 할 수 있다.

 

C는 계산한 결과를 저장하는 기능도 제공해준다.

이걸 '변수'라고 칭하며, 종류를 정해져있다.

C에서 기본적으로 제공해주는 '변수'의 종류는 다음과 같다.

 

변수 유형 설명 범위 예시
char 단일 문자를 저장하거나, 정수형으로 데이터 최소 단위이다. -128 ~ 127 char ch = 'A';
char baseNum = 200;
int 정수를 저장하는 기본 데이터 유형 Bit에 따라서 범위가 달라짐.
16Bit: -32768 ~ 32767
32Bit: -2147483648 ~ 2147483647
int num = 100;
flaot 실수를 저장하는데 사용되며, 단정밀도 부동 소수점 수를 나타낸다. 1.175494351 E - 38 ~ 3.402823466 E + 38 float realNum = 3.14f;
double 실수를 저장하는데 사용되며, 배정밀도 부동 소수점 수를 나타낸다. 2.2250738585072014 E - 308 ~ 1.7976931348623158 E + 308 double realNums = 3.14;
short 정수를 저장하는 데이터 유형. int보다 적은 범위를 저장한다.
16bit일때랑 똑같다.
-32768 ~ 32767 short num = 100;
long 정수를 저장하는 데이터 유형.
int보다 큰 범위를 저장한다.
64bit이상일때 사용됨.
-2,147,483,648 ~ 2,147,483,647 long num = 100;

 

 

여기서 접두사가 무엇이 붙냐에 따라서 변수의 상태가 달라지는 경우가 있다.

예을 들어서 unsigned가 있다.

unsigned란, 부호가 존재하지 않는 것으로 변수 유형에서 범위를 무조건 상수로 적용된 상태를 뜻한다

unsigned char라면, 0~255까지 지원하는 것 처럼 적용이 된다.

 

C와 C++같은 언어들은 컴파일러마다 다르지만, 실수랑 정수를 그냥 연산할 경우 정수 기준으로 계산이 되어서 결과를 저장하는 경우가 있다.

 

예을 들어서 int a = 1; float b = 3.14f;라는게 있다면,

a+b를 하면, 4가 결과물로 저장하게 된다.

이 경우 (a*1.0)+b을 사용해줘야한다.

 

예을 들어서 다음과 같이 적용했는데. 소수점이 0이 된다면, 컴파일러와 CPU가 그것을 지원해주지 않는 경우라고 이해하자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stdio.h>
 
#define PI 3.14
 
int main() {
    int a = 1;
    float b = PI;
 
    float c = a+b;
    float d = (a*1.0)+b;
 
    printf("%f\n", c);
    printf("%f\n", d);
 
    return 0;
}
 
cs

 

'프로그래밍 > C 언어' 카테고리의 다른 글

[C] 제어(1) - 조건문 -  (0) 2024.02.17
[C] 연산자  (0) 2024.02.16
[C] 기본적으로 지원해주는 출력  (0) 2024.02.14
[C] 기본 구조  (1) 2024.02.13
Posted by JunkMam
,