리눅스 C-언어 초급과정
4. 변수
다유데브
2022. 11. 11. 13:48
반응형
1) 목표
- 기본적인 변수의 종류 알아보기
- 변수와 메모리의 관계 이해하기
2) 예제 프로그램 작성
- vi var.c 작성
// 사용할 헤더파일
#include <stdio.h>
#include <limits.h>
#include <float.h>
// 프로그램시작. 반드시 1개의 main()함수가 있어야함.
int main() {
// 변수선언
char cVal; // 문자형
short sVal; // 정수
int nVal; // 정수
float fVal; // 부동소수점
long lVal; // 정수
double dVal; // 부동소수점
// 변수에 값을 저장
cVal = 'A'; // 문자형
sVal = 123; // 정수
nVal = 4567; // 정수
fVal = 456.98; // 실수
lVal = 12345678; // 정수
dVal = 123456.98; // 실수
// 각변수가 차지하는 메모리크기를 확인한다.
printf("char 크기:[%ld] byte : 범위:[%d ~ %d] : 값:[%c]\n", sizeof(char), CHAR_MIN, CHAR_MAX, cVal);
printf("short 크기:[%ld] byte : 범위:[%d ~ %d] :값:[%d]\n", sizeof(short), SHRT_MIN, SHRT_MAX, sVal);
printf("int 크기:[%ld] bytes : 범위:[%d ~ %d] :값:[%d]\n", sizeof(int), INT_MIN, INT_MAX, nVal);
printf("float 크기:[%ld] bytes : 범위:[%.3e ~ %.3e] :값:[%f]\n", sizeof(float), FLT_MIN, FLT_MAX, fVal);
printf("long 크기:[%ld] bytes : 범위:[%ld ~ %ld] :값:[%ld]\n", sizeof(long), LONG_MIN, LONG_MAX, lVal);
printf("double 크기:[%ld] bytes : 범위:[%.3e ~ %.3e] :값:[%f]\n", sizeof(double), DBL_MIN, DBL_MAX, dVal);
return 0; // main함수 종료
}
3) 컴파일/실행
c-lecture> gcc -o var var.c
c-lecture> ./var
char 크기:[1] byte | 범위:[-128 ~ 127] | 값:[A]
short 크기:[2] byte | 범위:[-32768 ~ 32767] | 값:[123]
int 크기:[4] bytes | 범위:[-2147483648 ~ 2147483647] | 값:[4567]
float 크기:[4] bytes | 범위:[1.175e-38 ~ 3.403e+38] | 값:[456.980011]
long 크기:[8] bytes | 범위:[-9223372036854775808 ~ 9223372036854775807] | 값:[12345678]
double 크기:[8] bytes : 범위:[2.225e-308 ~ 1.798e+308] | 값:[123456.980000]
4) 분석
- 변수선언
c언어에서 변수 선언은 c언어에서 지원하는 타입 변수명으로 선언합니다.
char cVal; char 타입으로 cVal 이라는 변수를 선언
int nVal; int 타입으로 nVal 이라는 변수를 선언
double dVal; doiuble 타입으로 dVal 이라는 변수를 선언
구문 마지막에 세미콜론(;) 에 주의 하세요!
※ 기본적으로 음수값을 가질수 있습니다.
※ unsigned 를 타입앞에 붙여서 양수값만을 가지게 사용할 수 있습니다. - 값을 할당
변수 = 값 으로 할당 합니다.
cVal = 'A'; -> ascii 문자를 할당
cVal = 65; -> ascii 문자에 대한 정수값을 할당
★위의 두문장은 똑같은 역활을 합니다. 'A' == 65
※ 리눅스에서 ascii 문자가 궁금하시면 man ascii 라고 치면 ascii 코드값이 나옵니다. - printf() 함수
출력할 내용 + 서식 과 서식에 해당하는 값으로 이루어 집니다.
서식과 값은 1:1로 대응합니다.
%ld : long값을 표현하기 위한 서식
%d : int값을 표현하기 위한 서식
\n : 줄바꿈(new line)
- sizeof() 연산자
sizeof(변수/타입)는 변수/타입의 크기(메모리)를 나타냅니다.
실행결과를 보면 sizeof(char) : 1바이트, sizeof(int) : 4바이트 ... 등을 나타냅니다.
개발하시다 보면 상당히 많이 사용하는 연산자중 하나 입니다. 잘 기억해두세요.
※ 변수에 대한 크기는 서버별로 차이가 있을수 있습니다. 반드시 개발하시는 서버에서 각 변수에 대한 크기를 확인하시기 바랍니다. - 메모리 관계
프로그램에서 변수를 선언하면
char cVal; 실제 메모리에 1바이트가 확보됩니다.
int nVal: 실제 메모리에 4바이트가 확보됩니다.
★개발하실때 불필요한 변수를 선언하면 메모리가 낭비됩니다. - 타입별 MIN값, MAX값
CHAR_MIN/CHAR_MAX : char타입의 최소/최대값
SHRT_MIN/SHRT_MAX : short타입의 최소/최대값
INT_MIN/INT_MAX : int타입의 최소/최대값
FLT_MIN/FLT_MAX : float타입의 최소/최대값
LONG_MIN/LONG_MAX : long타입의 최소/최대값
DBL_MIN/DBL_MAX : double타입의 최소/최대값
※ MIN/MAX값을 사용하기 위해서는
#include <limits.h>
#include <float.h>
를 추가 해줘야 합니다.
타입 | 종류 | 크기 | 범위(값) |
char | 문자형 | 1 바이트 | -128 ~ 127 |
short | 정수형 | 2 바이트 | -32768 ~ 32767 |
int | 정수형 | 4 바이트 | -2147483648 ~ 2147483647 |
long | 정수형 | 8 바이트 | -9223372036854775808 ~ 9223372036854775807 |
float | 부동소수점 | 4 바이트 | 1.175e-38 ~ 3.403e+38 |
double | 부동소수점 | 8 바이트 | 2.225e-308 ~ 1.798e+308 |
반응형