C언어 4주차 class
식별자
식별자 identifier란 변수 함수 등에 부여하는 이름
영문자 숫자 밑줄 만 가능
한글이나 밑줄을 제외한 특수문자는 불가능
첫 글자는 반드시 영문자 또는 밑줄로 시작
예약어는 식별자로 불가능
리터럴
리터럴은 실행 중 그 값이 변하지 않는 값 자체
정수 integer 형 리터럴은 0을 포함한 소수점이 없는 수
부동 소수점 floating-point형 리터럴은 부동 소수형
문자형 character 리터럴은 하나 1바이트 의 문자
문자열 string리터럴은 두개 이상의 문자 묶음
정수 integer 리터럴
10진 정수 리터럴은 우리가 일상적으로 접하는 정수
8진 정수 리터럴은 0에서 7까지만 사용하는 8진수로 구성된 수
16진 정수 리터럴은 10진수 10에서 15에 해당하는 수를 표현하기 위새 a~f까지의 영문자를 사용한다
long형 상수의 경우 숫자 뒤에 대문자 L이나 소문자1을 더 사용해준다.
실수 real형 리터럴
부동소수점 상수
소수점을 포함하는 수로 정수형보다 더 크고 작은 수를 정확하게 표현할 수 있음
문자형 리터럴
줄여서 char형
1바이트의 메모리에 저장
작은 따옴표로 묶어 사용하는 하나의 문자
문자열 string 리터럴
여러 개의 문자 모임
2개 한글은 한 개 이상의 문자
큰 따옴표""로 묶어서 표현
각문자가 한바이트씩저장된다.
자료형(data type)
자료형 은 처리 저장하고자 하는 자료의 형태
기본 자료형 (basic type)
- 문자형 정수형 부동형 열거형
유도 자료형
- 배결 함수 구주체 공용체 포인터
void형
값이 없음을 표시하는 자료형
void play(void){}
가장 많이 사용하는 대표적인 기본 자료형
문자형, 정수형 실수형 각각 1바이트 4바이트 8바이트
숫자나 문자등을 메모리에 저장하려면 적당한 크기의 기억 장소를 할당
숫자라도 4바이트에 저장하려면 부호가 없더라고 약42억 -21억~21억 까지만 표현 할 수 있으므로 더 큰 수나 소수점이 있는 수를 저장하기에는 부족하다
자료의 형태에 따라서 적당한 자료형을 선택하여 저장한다.
변수 선언문
자료를 저장하도록 할당된 기억장소의 이름을 변수(varible)라고한다
변수는 프로그램이 실행되는 동안 가변적인 자료를 저장하기 위한 기억장소의 이름으로 모든 변수는 사용하기 전에 선언을 해야한다
변수 선언 방법은 변수명 앞에 자료형을 쓴다
ex) int age, char ban; float height, double weight
기본 자료형의 종류 : 정수형
약 -21억 에서 21억까지 또는 0에서 42억 까지의 소수점이 없는 정수를 저장하기 위한 형
int형의 크기는 플랫폼 platform이나 컴파일러에 따라 다르다
#include<stdio.h>
#include<limits.h> //INT_MAX, INT_MIN을 사용하기 위해 추가
int main(void){
int x = INT_MAX; //int형으로 저장할 수 있는 최댓값
int y = INT_MIN; //int형으로 저장할 수 있는 최솟값
printf("%d",x);
printf("%d",x+1); //over flow
printf("%d",y);
printf("%d",y-1); //under flow
return 0;
}
결과값
2147483647-2147483648-21474836482147483647
C99에서 추가된 정수형
long long int와 _Bool형이 추가 되었따
long long int형은 최소 8바이트로 규정하고 있으며 vs,dec에서 모두 8바이트다
int main(void){
int b1,b2;
b1 = 0;
b2 = -1;
bool b3,b4;
b3 = false;
b4 = true;
printf("%d %d %d %d\n",b1,b2,b3,b4);
return 0;
}
c에서 0은 거짓 0이아니면 모두 참이다
기본 자료형의 종류 : 실수형
실수형 부동형 floating type의 크기와 종류
float는 6자리 까지 정밀하며
double은 15자리 까지 정밀하다
실수형 관련 상수는 float.h라는 헤더파일에 정의 되어있다.
변수를 상수화:const
const 키워드를 이용하면 변수를 상수화 할 수 있음
자료형 앞에 const를 추가하면 되고 초기값을 변경할 수 없음
// const 자료형 변수이름 = 상수값;
const int num=5; //num변수는 초기값 5에서 변경이 불가능해짐
const char ch = 'A'; //ch변수는 항상 'A', 다른 문자로 변경 불가능
자동 형 변환
10/4 , 10.0/4, 10/4.0,
1+'A'가 가능할까?
- 자료형이 서로다른 혼합 연산에서는 기억장소의 크기가 큰 쪽으로 통일시켜 연산이 이루어진다
- 이것을 자동 형 변환 이라고한다
- char(1byte)와 int(4byte)형이 혼합 연산을 하게 되면 char형이 int형으로 변경되어 연산이 되고 결과도 int형으로 나온다.
//자동 형변환
int main(void){
int i = 3;
double d=5.0;
printf("A+1=%d\n",'A'+1);
printf("A+1=%c\n",'A'+1);
printf("5.0/3=%f\n",d/i);
printf("10/4=%d\n",10/4);
printf("10.0/4=%f\n",10.0/4);
}
실행 결과
A+1=66
A+1=B
5.0/3=1.666667
10/4=2
10.0/4=2.500000
열거형 enum
열거형은 enum이라고 표현하며 나열된 데이터들에 일정한 값을 부여한다
열거된 데이터에는 정수 값을 대응시킨다
enum 열거형명{데이터1,데이터2}'
- enum days{sun,mon,tue,wed,thur,fri,sat};
- 순서대로 0부터 6까지 증가한다
- days가 열거형명 이므로 중괄호 에 나열된 데이터의 목록에 대해 0부터 1씩 증가된 값이 자동 할당됨
- enum days형의 변수는 sun,mon,tue,wed,thur,fri,sat중 하나만 저장이 가능하다
- enum days today;
- today = sun;
- 특정한 값이 대입되어 있으면 그 값에서 1씩 증가한다
- enum fresh {apple, pear, orange=6, lemon};
- 이러면 피어까지1 오렌지부터 6으로 카운팅된다 그럼 레몬은 7
열거형은 열거형명으로 데이터들을 대입하는 것이 하니고 열거형 변수를 만들어서 사용한다
//enum을 사용하는 이유
int fruit = 0;
if(fruit == 0){
printf("사과입니다.");
}
//이렇게 보면 사과가 어떤건지 확인하기가 어렵다
enum Frtuit { APPLE, BANANA, ORANGE}
enum Fruit fruit = APLLE; //열거형 변수 선언과 동시에 값 대입
if(fruit == APPLE) {
printf("사과입니다");
}