728x90

변수와 자료형

2.1 변수와 자료형 개요

1. 변수, 자료형, 상수
1) 변수: 값을 담을 그릇
- 값을 저장하기위한 기억 장소
- 사용하기 전에 반드시 선언

2) 자료형: 그릇의 모양
- 자료값의 형태
- 컴퓨터 내부에서 값이 저장되고 처리되는 방식을 결정짓는 매우 중요한 요소

3) 상수
- 변하지 않는 수로 변수와 대비되는 개념
- 10, 20, 30 과 같은 특정 값

2. 2 변수 선언과 사용

1. 변수 선언:  int n;
- 자료형을 앞에 명시 한 후 사용할 변수 이름을 적음
- 변수 선언도 하나의 문장이므로 세미콜론을 붙여야 함

2. 다양한 변수선언의 예시
1) 가능

int a;
double b;



2) 가능

int a, b;
double c, d;



3) 불가능

int a, double b;



3. 변수 값 저장
- 선언된 변수에 값을 저장하기 위해 대입연산자 '=' 사용
- 왼쪽 변수에 오른쪽의 값을 대입(저장)하라는 의미
- 변수에 새로운 값을 대입하면 이전값은 사라짐

>>>코드 예시

int age = 20;



4. 대입 연산자
- 대입 연산자 왼쪽: 저장공간 자체
- 대입 연산자 오른쪽: 저장된 값

5. 변수 초기화
- 변수를 선언만 하고 값을 대입하지 않으면 쓰레기 값(garbage value)가 저장되어 있음
- 선언과 동시에 변수 값 지정(변수 초기화)
>>> 예시

int num = 123;


- 여러변수 동시 초기화 가능, 일부 변수만 초기화 가능
>>> 예시

int a = 123, b = 456, c = 789;



6. 키워드와 식별자

1) 키워드
- C언어에서 특별한 의미를 가지도록 미리 정해놓은 단어
- 예) char, int, double등 기본 자료형 등등

2) 식별자
- 변수처럼 프로그래머가 지어서 사용하는 이름
- 식별자로 사용할 수 없는 이름의 예 : 밑줄이 아닌 특수문자, 첫 문자에 숫자, 키워드

2.3 정수 자료형

1. 정수 자료형 종류
- 2, 3, 5와 같이 정수를 표현하는 자료형
- 정수형 키워드: 

short(2 bytes) 

<= int(4 bytes) 

<= long(4 bytes) 

<= long long(8 bytes)

- int: 정수를 나타내는 가장 기본적인 자료형
- short, long, long long: 정수를 나타내지만 자료형의 크기가 다름
- 정수형 출력: printf의 서식 지정자 '%d' 사용

- 같은 자료형이라도 시스템에 따라 크기가 다를 수 있음
- 자료형의 크기는 sizeif()연산자를 이용하여 확인
- 자료형의 크기는 표현 할 수 있는 수의 범위 결정
>>> int의 크기는 보통 4byte(32bit)로서 2^(32)개의 수 표현 가능
따라서 -2^(31) ~ 2^(31) -1 사이의 정수를 나타냄(0, 음수, 양수)

2. signed와 unsigned

1) signed: 음수와 양수 모두 표현
2) unsigned: 0과 양수만 표현(음수X)
>>> 자료형 앞에 부호여부 명시해 주면 된다.(명시하지 않으면 기본적으로 signed)

2.4  부동소수 자료형

1. 부동소수(floating point) 형 종류
- 3.14, 3.26567와 같이 실수를 표현하는 자료형
- 자료형 키워드: 
float(4 bytes, 유효 자릿수 약 7개) 

<= double(8 bytes, 유효 자릿수 약 16개) 

<= long double(8 bytes, 유효 자릿수 약 16개)

- double: 부동소수를 나타내는 가장 기본적인 자료형
- float, long double: 부동소수를 나타내지만 자료형의 크기가 다름 
- 부동소수형 출력: printf의 서식 지정자 '%f' 사용

2. 부동소수형의 표현 방식
- 0.000023의 다른 표현 >>> 2.3 * 10^(-5)
- 컴퓨터 내부에선 후자의 방식으로 표현
- 컴퓨터에서 정수 3과 부동소수 3.0은 전혀 다름

2.5 문자 자료형

1. 문자형
char: 문자형을 나타내는 가장 기본적인 자료형
- 문자형 자료형의 크기는 모두 1byte
- 문자는 작은 따옴표를 사용하여 표현
- 문자형 출력: printf의 서식 지정자 '%c' 사용

2. 문자형의 실체
특정 문자에 해당하는 정수값을 지정아스키(ASCII) 코드
- 문자형은 본질적으로 정수형과 동일

- 알아두면 좋은 아스키 코드
- "A": 65
- "a": 97
- "0": 48

>>>코드 예시
char c1 = 'A';
char c2 = 65;
printf("c1: %c %d\n", c1, c1);
printf("c2: %c %d\n", c2, c2);

>>>결과
c1: A 65
c2: A 65

3. 문자형은 본질적으로 정수(1byte)
- 정수 연산 가능: 'A' +1 == 'B'
- 부호 없는 자료형 가능: unsigned char
char: 1byte(8bits): -128~127
unsigned char: 1byte(8bits): 0~255

4. 문자 '0'과 숫자 0은 다르다
문자 '0'의 아스키 코드 값은 48

5. 특수 문자(이스케이프 시퀸스)
- \n: 새로운 줄로 이동(Enter)
- \t: 다음 탭으로 이동(tab)
- \b: 앞으로 한칸 이동(Back Space)
- \r: 줄의 맨 앞으로 이동(home)
- \a: '삑' 소리를 냄
- \\: 역슬래쉬
- \': 작은 따옴표'
\": 큰 따옴표"
- %%: 퍼센트 %

2.6 자료형 변환

1. 자동 형변환(묵시적 형변환)
- 정수 >>> 부동소수

int a = 3;
double b = a;


>>> 결과

b = 3.0 // 소수점 아래자리는 .00000으로 변환



- 부동소수 >>> 정수

double a = 3.14;
int b = a;


>>> 결과

b = 3 // 소수점 아래자리는 소실되고 정수만 남음



2. 명시적 형변환
- printf의 서식 지정자에 따라 형변환이 자동으로 발생하지 않음 >>> 명시적 형변환 필요
>>> 예시

printf("12.3: %d\n", (int) 12.3);
printf("123: %f\n", (double) 123);


>>> 결과
12.3: 12
123: 123.000000

728x90

+ Recent posts