[C언어] 변수, 상수

강지원·2024년 5월 8일

리눅스 기반 C언어

목록 보기
6/24

변수(Variable)

: 값을 저장하는 메모리 공간을 확보하고 그 메모리 공간에 이름을 붙여준 것
- 변수에 저장한 값은 언제든 변경할 수 있다
- 변수마다 정해진 자료형이 있다.
- 모든 변수는 정해진 이름이 있고, 변수명을 정의할 때는 지켜야 할 규칙이 있다

자료형

정수형메모리크기범위
short2Byte-32768 ~ +32767
int4Byte-2147483648 ~ +2147483647
long4Byte-2147483648 ~ +2147483647
long long8Byte-9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,807

실수형메모리크기범위
float4Byte3.4E-38 ~ 3.4E+38 , 유효자리 6자리
double8Byte1.7E-308 ~ 1.7E+308 , 유효자리 12자리

문자형메모리크기범위
char1Byte-128 ~ 127

- 정수형과 실수형은 저장구조가 완전히 다르다.
- 따라서 연산속도 차이가 많이 난다.

변수 선언

int i = 1;

변수 선언 = 랜덤으로 메모리를 할당하는 것
메모리 공간에 i 라는 이름을 붙여준 것이다.

변수명 규칙

  1. 앞에 숫자로 시작 불가능(상수로 처리하기 때문에)
  2. 예약어 불가능(if, printf, ...)
  3. '-' 사용 불가능 (연산자 - 랑 같기 때문)
  4. 대소문자 구분해야 함

컴파일러에게 혼돈을 주는 문장을 사용하지 못하도록 한 것이다

변수 선언 시 고려사항

  1. 변수에 저장될 값의 크기: 변수의 범위보다 오버플로, 언더플로가 발생하지 않도록 최소값, 최대값 범위를 고려해야 함

  2. 변수의 선언 위치 : 변수를 함수 외부에 선언하면 전역변수, 함수 내부에 선언하면 지역변수로 저장되어 전역변수, 지역변수의 기억공간은 다르다. 전역변수는 자료 영역에, 지역변수는 임시 공간인 스택영역에 저장된다

  3. 변수의 초기화 : 선언된 변수에 특정값을 부여하는 것이다. 초기화 하지 않으면 쓰레기값이 남아서 에러가 발생할 수 있다

sizeof 연산자

- sizeof() 함수는 메모리 공간을 소모하는 크기를 'byte' 단위로 바꿔서 출력하는 함수이다.
- 시스템에 따라 자료형(int, char, short, long) size가 변할 수도 있기 때문에 사용한다.

int a;
a = 8;

	printf("a의 값 %d size : %ld\n",a,sizeof(a));
-----------------------------------------------------
> a의 값 8 size : 4

상수

- 상수는 변하지 않는 값을 뜻한다.
- 처음 선언할 때 값을 할당한 후에 그 뒤로는 값을 변경할 수 없다.
- 코드영역에 저장

상수를 정의하는 방법에는 두가지 방법이 있다.
1. const 키워드를 사용하는 방법
2. #define 전처리기를 사용하는 방법

const 상수

메모리 공간을 사용한다.

const int a = 3;  // a는 더이상 변경 불가능

매크로 상수

전처리기가 일괄 변경 후 #define 문이 사라진다.
-> 메모리 공간을 줄일 수 있다

#define eyeNum 2; 

메모리 공간

printf 출력 문자

출력 형식설명출력 예
%d부호 있는 정수형printf("%d",-150);-150
%c문자열 하나printf("%c",'a');a
%x16진수(소문자)로 출력printf("%x",11);b
%X16진수(대문자)로 출력printf("%X",11);B
%o8진수로 출력printf("%o",8888);21270
%s문자열 출력printf("%s","hello, world");hello, world
%u부호없는 정수 출력printf("%u",1);1
%ld부호 있는 long형 정수 출력printf("%ld",-3243)-3243
%lld부호 있는 long long형 정수 출력printf("%lld",-2147483649)-2147483649
%lu부호 없는 long형 정수 출력printf("%lu",2314)2314
%llu부호 없는 long long형 정수 출력printf("%llu",2147483650)2147483650
%f,%lf실수형 출력, 6자리까지 출력이 되며 그 이하는 반올림처리, 모자라면 0으로 출력,float 자료형은 %f,double에 입력받을 때는 %lf 사용printf("%f, %.1f",0.56,0.56)0.560000, 0.6

진수 변환

진수

0개의 댓글