c언어 기본 자료형, 접미사, 상수const

































 



Bit


Byte


범위


문자형


char


unsigned char


8


8


1


1


-128 ~ 127


0 ~ 255


열거형


enum


16


2


-32768 ~ 32767


정수형


short


unsigned short


long


unsigned long


16


16


32


32


2


2


4


4


-32768 ~ 32767


0 ~ 65535


-2147483648 ∼ 2147483647


0 ∼ 4294967295


부동형


float


double


long double


32


64


80


4


8


10


±3.4e-38∼±3.4e+38


±1.7e-308∼±1.7e+308


±3.4e-4916∼±1.1e+4932


이 값이 절대적이지는 않다.

자료형을 선택 할 때는 숫자가 범위를 초과하지 않도록 선택


























 접미사 자료형 사용예
u, U  unsigned int  111U
l,  L long 111L
ul,  UL unsigned long 111UL
f,  F float 1.115F
l,  L long double 1.11L

float f = 3.14; //에러 3.14는 double형이라 데이터가 손실된다.
float = 3.14f; //통과

상수형 선언
const
const double PI = 3.14;
상수형선언은 이런식으로 표현한다.
상수는 대문자 이름을 짓는게 전통이라고 한다. 변수하고 안헷갈리게

자료형 변환 , 자동 형 변환, 강제 형 변환(명시적 형 변환)

대입연산시 발생하는 자동 형 변환

char a = 323223
int b = 2.34234
double c
= 5

자료형 자신보다 큰 용량을 이렇게 집어넣으면 소수부 손실이 발생한다.
char에서는 상위 비트를
잃게된다.

int a = 1;
int b = 2;
float f = a/b;

인 경우 나눗셈
결과는 0.00000
0.5인 경우 소수부 손실이 발생하기 때문에 '='연산을 하기 전에 이미 .5를 잃게된다.


럴 때
float f = (float) a/b;
로 고쳐쓰면... .5를 잃지 않게된다.


이렇게 되냐... 논리적으로 설명해라.. 이렇게 하는게 더 낫지 않냐 라고 다른 방법을 제시해도.... 별수없다.
만든사람이
이런 논리로 만든거니까 그 사람의 논리를 받아들이던지... 외우자.