변수와 자료형
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
'프로그래밍 언어 개념정리 > C언어 개념 정리' 카테고리의 다른 글
C언어 개념 정리: 함수 (3) | 2024.11.10 |
---|---|
C언어 개념 정리: 배열 (0) | 2024.11.09 |
C언어 개념 정리: 반복문 (0) | 2024.11.08 |
C언어 개념 정리: 조건문 (0) | 2024.11.07 |
C언어 개념 정리: 수식과 연산자 (1) | 2024.11.05 |