2. 상수
《상수의 종류》
▷ 리터럴(Iiteral) : 문자 그대로의 상수 값을 지니는 상수
- 정수형 상수 : 0, 10, 3.0, 1.11
- 'a'등
▷ 심볼릭(symbolic) : 상수에 이름이 존재하는 상수
- 예약어로 constant, define 등을 사용하여 만듦
EX) 원주율
#define PI 3.14
(=PI라는 이름의 상수가 3.14를 가지게 됨, 이 값은 상수이기 때문에 변경할 수 없음)
《리터럴 상수의 예제》
#include <stdio.h>
int main (void)
{
int a = 5; a의 값을 5로 초기화
→ 리터럴 상수
return 0;
}
《심볼릭 상수의 예제 1》
#include <stdio.h>
int main (void)
{
const int MAX = 5; const를 예약어로 사용
- 선언된 변수가 아니라 상수라는 의미만 한 상태에서 사용하지 않음
- 이 MAX 값은 상수이기 때문에 값을 변경할 수 없음
이름을 암묵적으로 대문자(MAX)로 선언
return 0;
}
《상수의 장점》
▷ 변함이 없는 상수임을 보장받을 수 있음
- 심볼릭 상수는 사용자 임의대로 이름을 선언할 수 있음
- 이름을 의도하지 않은 코드에서 변경하면 컴파일러에서 에러 발생
▷프로그램 전체에서 사용되고 있는 심볼릭 상수 값을 쉽게 바꿀 수 있음
EX) #define PI 3.14
(상수 값만 변경시키면 프로그램 전체에서 변경 가능)
《형 변환》
다른 자료형끼리 변환이 일어나는 것
정수형 -----------------------> 문자형
실수형 -----------------------> 정수형
《형 변환의 종류》
▷ 자동 변환
- 자료형이 자신과 다른 자료형과 연산을 할 때 자동으로 발생
- 자동 변환으로 인해서 자료형이 축소 또는 확장
Q. 자동 변환이 일어나는 이유는?
A. C언어에서는 여러 가지 자료형이 있는 만큼 이러한 자료형끼리 연산을 할 때 통일하기 위해서
컴파일러에 의해서 내부적으로 변환시킴
▷ 강제 변환
- 컴파일러가 아닌 사용자가 특정한 목적을 가지고 코드에 작성함으로써 발생하는 변환
《자동 형 변환(확장)》
#include <stdio.h>
int main (void)
{
short a = 5; short형 변수 a를 사용 크기가 작은 short형 변수 a를
long b; long형 변수 b를 선언 long형으로 크기를 확장
b = a; 자동으로 형 변환
→ short형 a의 값을 long형 b에 복사하기 때문
return 0;
}
《자동 형 변환(자료형 축소)》
#include <stdio.h>
int main (void)
{
float a = 1.5; 실수형 자료형으로 float 자료형을 가지는 a를 선언함과 동시에 1.5라는 값으로 초기화
int b; 정수형 자료형인 b를 선언
b = a; 대입 연산
→ b는 정수, a는 실수
→ 실수 값을 정수 값에 복사
return 0;
}
float a = 1.5; 컴파일러가 내부적으로 실수형 변수 a가 가지고 있는 1.5라는 실수 값을 먼저 정수 값으로 바꿈
int b; - 소수점 아래의 값을 버림(1.5 → 1)
b = a; - 자료형의 축소 발생(값의 손실 발생)
《강제 변환》
#include <stdio.h>
int main (void)
{
int a, b; 정수형 자료형인 int형 변수 a, b를 선언
double c; 실수형 자료도 c를 선언
a = 3; 정수형 변수인 a에 3을 대입
b = 2; b에 정수 값인 2를 대입
c = a / b; a/b 연산 ( 정수형 : 정수형 나누기 -> 형 변환이 일어나지 않음)
printf ("%f" , c ) ; 실수형 변수 c에 복사하는 연산
return 0;
}
printf ("%f" , c ) ; 출력 값은 1.5? = 결과는 1.000000(1.5는 정수가 아니기 때문)
이러한 경우를 위해 강제 형 변환이 필요하다.
《강제 형 변환》
#include <stdio.h>
int main (void)
{
int a, b;
double c;
a = 3;
b = 2;
c = a / b; (double)라는 코드를 a앞에 적음으로써 1.5 출력
printf ("%f" , c ) ;
return 0;
}
정수형 변수 a에 ()를 이용하여 double 형태로 변환
↓
정수형 a3 -> 실수 3.000000
↓
a/b 나누기 연산 -> a는 실수, b는 정수인 경우 자동 형 변환 발생
↓
실수와 정수의 연산에 의해서 실수 값으로 저장
↓
결과 값 1.5
*본 게시글은 K-MOOC <C 프로그래밍 개론>수업을 참고한 게시글입니다.
'C언어' 카테고리의 다른 글
[C언어] 변수와 상수 (0) | 2021.05.26 |
---|---|
[C언어] 프로그램 작성 실습과 유의사항 (0) | 2021.05.22 |
[C언어] 설치하기(무료) (0) | 2021.05.22 |
[C언어] 역사 (0) | 2021.05.22 |
[C언어] 프로그램 개발 과정 (0) | 2021.05.22 |