#변수

(변수에 저장된)데이터는 저장되어야만 다음에 사용할 수 있다.

 

 

#자료형

자료형
정수형
부동 소수점형
문자형
short 2byte -32768~32767 float 4byte char 1byte
int 4byte 21억쯤 double 8byte    
long 4byte 21억쯤 long double 8byte    
long long 8byte          

(2byte = 16bit, 4byte = 32bit, 8byte = 64bit)

 

 

#sizeof()

: 변수나 데이터타입의 크기를 바이트 단위로 반환한다.

sizeof(x) // 변수

sizeof(10) // 값

sizeof(int) // 자료형

sizeof(double) // 자료형

printf("변수 x의 크기 : %d\n", sizeof(x));
printf("char형의 크기 : %d\n", sizeof(char));
printf("int형의 크기 : %d\n", sizeof(int));
printf("long형의 크기 : %d\n", sizeof(long));

 

 

#unsigned 수식자

unsigned : 부호를 갖는 값인 signed과 달리 음수가 아닌 값만 나타낸다.

unsigned int에서 int는 생략 가능하다.

ex) unsigned int는 0 ~ +42억쯤 (signed int는 -21억 ~ +21억)

 

 

#오버플로우

: 변수가 나타낼 수 있는 범위를 넘는 숫자를 저장하려고 할 때 발생

오버플로우 <-> 언더플로우

short s_money = SHRT_MAX; // s_money를 최대값으로 초기화한다. 32767
unsigned short u_money = USHRT_MAX; // u_money를 최대값으로 초기화한다. 65535

s_money = s_money + 1; // -32768이 출력됨
u_money = u_money + 1; // 0이 출력됨

 

 

#10진법, 8진법, 16진법

- 8진법

012_(8) = 1*8^1 + 2*8^0 = 10

- 16진법

0*A_(16) = 10*16^0 = 10

- 숫자는 기본적으로 int형 10진수?

 

 

#기호상수

: 상수를 기호로 표현한 것. 기호상수가 정의된 곳만 상수를 수정하면되서 편리하다.

ex)

3.141592는 PI

area = PI*radius*radius;

0.15는 TAX_RATE

income = salary - TAX_RATE*salary;

 

#define ~

ex) #define EXCHANGE_RATE 1120 : EXCHANGE_RATE을 1120으로 정의함.

 

const : 변수가 값을 변경할 수 없게 한다.

ex) const int EXCHANGE_RATE = 1120;

 

 

#정수 표현

이진수로 변환해 저장

1. 음수 표현법1

부호비트(0 양수, 1 음수) + 7자리(0 or 1)

> 결과 부정확

 

2. 음수 표현법2 : 2의 보수로 음수 표현

음수표현법1의 모든 비트 반전 -> 1을 더한다

//2의 보수 프로그램
int main(void)
{
	int x = 3;
	int y = -3;

	printf("x = %08X\n", x);	// 8자리의 16진수 출력
	printf("y = %08X\n", y);
	printf("x+y = %08X\n", x + y);

	//x = 00000003
	//y = FFFFFFFD
	//x + y = 00000000
	
	return 0;
}

 

 

#실수 표현 - 부동 소수점

부동 소수점이 고정 소수점 방식보다 범위가 크다.  

float : 단일 정밀도 부동 소수점

double : 두배 정밀도 부동 소수점

2e+10은 2*10^10

9.26E3은 9.26*10^3

 

 

#문자형

문자도 숫자로 표현되며 아스키 코드를 이용한다.

//문자 변수와 문자 상수
int main(void)
{
	char code1 = 'A';
	char code2 = 65;

	printf("code1 = %c\n", code1);
	printf("code1 = %d\n", code1);
	printf("code2 = %c\n", code2);

	//A 출력
	//65 출력
	//A 출력

	return 0;
}

 

 

#제어문자

: 인쇄 목적이 아니라 제어 목적으로 사용되는 문자들 (줄바꿈 문자, 탭 문자, 벨소리 문자, 백스페이스 문자)

int main(void)
{
	int id = 1;
	int pass = 2;
	printf("\a입력된 아이디는 \"%d\"이고 패스워드는 \"%d\"입니다.", id, pass); // 경고음 소리남

	return 0;
}

+ Recent posts