์ž๋ฃŒํ˜•

  • ํ”„๋กœ๊ทธ๋žจ์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋“ค์ด ๊ธฐ์–ต ๊ณต๊ฐ„์—์„œ ์–ด๋–ป๊ฒŒ ์ €์žฅ๋˜๊ณ  ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ• ์ง€, ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์•Œ๋ ค์คŒ
  • ์ข…๋ฅ˜
    • ์ •์ˆ˜ํ˜•
    • ์‹ค์ˆ˜ํ˜•
    • ๋ฌธ์žํ˜•
    • ์‚ฌ์šฉ์ž ์ •์˜ ์ž๋ฃŒํ˜•

์ •์ˆ˜ํ˜•

  • ์†Œ์ˆ˜์ ์ด ์—†๋Š” ์ˆซ์ž
  • ์Œ์˜ ์ •์ˆ˜, 0 , ์–‘์˜ ์ •์ˆ˜

์˜ค๋ฒ„ํ”Œ๋กœ์šฐ(overflow)

๋ฐ์ดํ„ฐ ํ—ˆ์šฉ ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋•Œ, ์˜๋„ํ•œ ๊ฐ’์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ

#include <stdio.h>
int main(void) {
	short a = 32767, b=2, c;
	unsigned short d;
	
	c = a+b;
	d = a+b;
	
	printf("c = %d \n", c);
	printf("d = %d \n", d);
	
	
	return 0;
}

//ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> c = -32767
d = 32769

์–ธ๋”ํ”Œ๋กœ์šฐ(underflow)

๋ฐ์ดํ„ฐ ํ—ˆ์šฉ ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ๊ฐ’์„ ๋ณ€์ˆ˜์— ์ €์žฅํ•  ๋•Œ, ์˜๋„ํ•œ ๊ฐ’์ด ์•„๋‹Œ ๋‹ค๋ฅธ ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ

#include <stdio.h>
int main() {
	short a = -32767, b = -2, c;
	unsigned short d;
	
	c = a+b;
	d = a+ b;
	
	printf("c = %d\n ", c);
	printf("d = %d\n ", d);	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> c = 32767
 d = 32767

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.


๋ฐ์ดํ„ฐ ํ‘œํ˜„ ๋‹จ์œ„

ํฌ๊ธฐ ๊ตฌํ•˜๋Š” ํ•จ์ˆ˜

sizeof(์ž๋ฃŒํ˜•) 
#include <stdio.h>
int main() {
	short x = 1;
	int y = 2;
	long z =3;
	
	printf("short์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(x));
	printf("int์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(y));
	printf("long์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(z));
	printf("short์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(short));
	printf("int์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(int));
	printf("long์˜ ํฌ๊ธฐ : %d ๋ฐ”์ดํŠธ \n", sizeof(long));
	
	return 0;
	
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> short์˜ ํฌ๊ธฐ : 2 ๋ฐ”์ดํŠธ
int์˜ ํฌ๊ธฐ : 4 ๋ฐ”์ดํŠธ
long์˜ ํฌ๊ธฐ : 8 ๋ฐ”์ดํŠธ
short์˜ ํฌ๊ธฐ : 2 ๋ฐ”์ดํŠธ
int์˜ ํฌ๊ธฐ : 4 ๋ฐ”์ดํŠธ
long์˜ ํฌ๊ธฐ : 8 ๋ฐ”์ดํŠธ

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ˆ˜ํ˜•

์†Œ์ˆ˜์ ์ด๋‚˜ ์ง€์ˆ˜๊ฐ€ ์žˆ๋Š” ์ˆ˜

float a = 3.14f 
    /* ๋’ค์— ๋ถ™๋Š” f๋Š” ์ž„์‹œ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ ๋งํ•œ๋‹ค.
    ์ž„์‹œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋ฅผ 4๋ฐ”์ดํŠธ๋กœ ๊ฒฐ์ •ํ•ด ๋‹ฌ๋ผ๋Š” ์˜๋ฏธ.
    a๋Š” ์•ž์— float๋ฅผ ์ผ๊ธฐ ๋•Œ๋ฌธ์— 4๋ฐ”์ดํŠธ์˜ ๋ฐฉ์ด ์ด๋ฏธ ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค. */
    			
float a = 3.14
    /* ๋’ค์— f๋ฅผ ์•ˆ์ผ๊ณ ,์‹ค์ˆ˜ํ˜•์ด๊ธฐ ๋•Œ๋ฌธ์— ์ž„์‹œ๋ฉ”๋ชจ๋ฆฌ๋Š” 8๋ฐ”์ดํŠธ๊ฐ€ ํ˜•์„ฑ๋œ๋‹ค
    ์—ฌ๊ธฐ์„œ 4๋ฐ”์ดํŠธ์ธ a์— ๋„ฃ๊ฒŒ๋˜๋ฉด ์งค๋ฆด์ˆ˜๋„ ์žˆ๋‹ค. 
    ๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค.*/
    
    // L์€ ๋กฑ๋”๋ธ”๋กœ ์ž„์‹œ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

#include <stdio.h>
int main() {
	float x = 1.1f;
	double y = 2.2;
	long double z = 3.3L;
	
	printf("float x = %f\n", x);
	printf("double y = %f\n", y);
	printf("long double z = %lf\n", z);
	
	return 0;
}

//ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> float x = 1.100000
double y = 2.200000
long double z = 0.000000

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์„œ์‹ ๋ฌธ์ž

  • %f : float, double์ธ ๊ฒฝ์šฐ
  • %lf : long double
%6.1f // ์ถœ๋ ฅํญ 6์นธ, ์˜ค๋ฅธ์ชฝ ์ •๋ น, ์†Œ์ˆ˜์  1์ž๋ฆฌ๊นŒ์ง€ 
#include <stdio.h>
int main() {
	int a = 20;
	float b = 5.06f;
	float c = 1234567.89f;
	
	printf("0)%d\n", 123456);
	printf("1)%d\n", a);
	printf("2)%6d\n", a);
	printf("3)%+6d\n", a);
	printf("4)%-6d\n", a);
	printf("1)%f\n", b);
	printf("2)%6.1f\n", b);
	printf("3)%+6.1f\n", b);
		printf("4)%-6.1f\n", b);
		printf("5)%6.1f\n", c);
	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> 0)123456
1)20
2)    20
3)   +20
4)20
1)5.060000
2)   5.1
3)  +5.1
4)5.1
5)1234567.9

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. 

๋ฌธ์žํ˜•

  • char : ๋ฌธ์žํ˜•์„ ๋‹ค๋ฃจ๋Š” ์ž๋ฃŒํ˜•
  • ๋ฌธ์ž 1๊ฐœ๋ฅผ ์ž‘์€ ๋”ฐ์˜ดํ‘œ (โ€)์‚ฌ์ด์— ๋„ฃ์–ด์„œ ์‚ฌ์šฉ
  • ์ž‘์€ ๋”ฐ์˜ดํ‘œ ์•ˆ์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ์ดํ„ฐ 1๊ฐœ๋กœ ์ทจ๊ธ‰ํ•จ
  • ์‚ฌ์šฉ๋˜๋Š” ๋ฌธ์ž๋Š” 8๋น„ํŠธ(1๋ฐ”์ดํŠธ)๋กœ ์ฒ˜๋ฆฌ๋จ
  • ๋‚ด๋ถ€์ ์ธ ๋ฌธ์ž ์ฝ”๋“œ (์•„์Šคํ‚ค ์ฝ”๋“œ) ์— ์ƒ์‘ํ•˜๋Š” ์ˆซ์ž๋กœ ๋ฐ”๋€œ
  • unsigned int์— ์ €์žฅ๋จ

์•„์Šคํ‚ค ์ฝ”๋“œ ํ‘œ

#include <stdio.h>
int main() {
	
	printf("์†Œ๋ฌธ์ž a์˜ ASCII ๊ฐ’์€ %d์ด๋‹ค.\n", 'a');
	printf("์†Œ๋ฌธ์ž b์˜ ASCII ๊ฐ’์€ %d์ด๋‹ค.\n", 'b');
	printf("์†Œ๋ฌธ์ž A์˜ ASCII ๊ฐ’์€ %d์ด๋‹ค.\n", 'A');
	printf("์†Œ๋ฌธ์ž B์˜ ASCII ๊ฐ’์€ %d์ด๋‹ค.\n\n", 'B');
	
	printf("ASCII 97์€ %c์ด๋‹ค.\n", 97);
	printf("ASCII 98์€ %c์ด๋‹ค.\n", 98);
	printf("ASCII 65์€ %c์ด๋‹ค.\n", 65);
	printf("ASCII 66์€ %c์ด๋‹ค.\n", 66);
	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> ์†Œ๋ฌธ์ž a์˜ ASCII ๊ฐ’์€ 97์ด๋‹ค.
์†Œ๋ฌธ์ž b์˜ ASCII ๊ฐ’์€ 98์ด๋‹ค.
์†Œ๋ฌธ์ž A์˜ ASCII ๊ฐ’์€ 65์ด๋‹ค.
์†Œ๋ฌธ์ž B์˜ ASCII ๊ฐ’์€ 66์ด๋‹ค.

ASCII 97์€ a์ด๋‹ค.
ASCII 98์€ b์ด๋‹ค.
ASCII 65์€ A์ด๋‹ค.
ASCII 66์€ B์ด๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
#include <stdio.h>
int main() {
	char a ='A';
	char b = 'B';
	
	printf("๋ณ€์ˆ˜ a๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", a, a);
	printf("๋ณ€์ˆ˜ b๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", b, b);
	
	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> ๋ณ€์ˆ˜ a๋Š” A๋กœ ๊ฐ’์ด 65๋‹ค.
๋ณ€์ˆ˜ b๋Š” B๋กœ ๊ฐ’์ด 66๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
#include <stdio.h>
int main() {
	
	char a = 65;
	char b = 66;
	
	printf("๋ณ€์ˆ˜ a๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", a, a);
	printf("๋ณ€์ˆ˜ b๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", b, b);
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> ๋ณ€์ˆ˜ a๋Š” A๋กœ ๊ฐ’์ด 65๋‹ค.
๋ณ€์ˆ˜ b๋Š” B๋กœ ๊ฐ’์ด 66๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • small a(97), large A(65)๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.

์„œ์‹์ง€์ •์ž

char a = 'A' // ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉํ•ด์•ผํ•จ
    
printf("๋ณ€์ˆ˜ a๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค. \n", a, a)
    
// ๊ฒฐ๊ณผ
// ๋ณ€์ˆ˜ a๋Š” A๋กœ ๊ฐ’์ด 65๋‹ค.
    
    // %c๋กœ ํ•  ๊ฒฝ์šฐ ์•„์Šคํ‚ค์ฝ”๋“œ์— ์ƒ์‘ํ•˜๋Š” ๋ฌธ์ž ์ถœ๋ ฅ
    // %d ์“ธ ๊ฒฝ์šฐ ์‹ค์ œ ์ •์ˆ˜ ๊ฐ’ ์ถœ๋ ฅ
char a = 'A' + 1 // ์ž‘์€๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉํ•ด์•ผํ•จ
    
printf("๋ณ€์ˆ˜ a๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค. \n", a, a)
    
// ๊ฒฐ๊ณผ
// ๋ณ€์ˆ˜ a๋Š” A๋กœ ๊ฐ’์ด 66๋‹ค.  
```c
#include <stdio.h>
int main() {
	char a = 'A' + 1;
	char b = 'B' + 1;
	
	printf("๋ณ€์ˆ˜ a๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", a, a);
	printf("๋ณ€์ˆ˜ b๋Š” %c๋กœ ๊ฐ’์ด %d๋‹ค.\n", b, b);
	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> ๋ณ€์ˆ˜ a๋Š” B๋กœ ๊ฐ’์ด 66๋‹ค.
๋ณ€์ˆ˜ b๋Š” C๋กœ ๊ฐ’์ด 67๋‹ค.

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜•๋ณ€ํ™˜

๋ฌต์‹œ์  ํ˜•๋ณ€ํ™˜

  • ํ•˜๋‚˜์˜ ์ž๋ฃŒํ˜•์„ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ณ€ํ™˜์‹œ์ผœ ์ž๋ฃŒํ˜•์„ ๊ฐ™๊ฒŒ ํ•˜๋Š” ๊ฒƒ
  • ๋ณ€์ˆ˜ 2๊ฐœ๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉํ•จ
  • ์ž„์‹œ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•  ๋•Œ์— ๋‘ ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•˜๊ณ , ๋” ํฐ ์ง‘ํ•ฉ์— ์†ํ•˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ์ž„์‹œ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹นํ•จ

#include <stdio.h>
int main() {
	int a = 10;
	float b = 20.07f, c;
	
	c = a + b;
	
	printf("c = %f \n", c);
	

	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> c = 30.070000

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜

  • ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ•์ œ๋กœ ํ˜•๋ณ€ํ™˜ ์‹œํ‚ค๋Š” ๊ฒƒ
  • ์บ์ŠคํŒ… ์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
  • ์—ฐ์‚ฐ์‹ ์•ž์— ํ˜•๋ณ€ํ™˜ ์—ฐ์‚ฐ์ž()๋ฅผ ๋ถ™์ด๊ณ  ()์•ˆ์—๋Š” ๋ณ€ํ™˜์‹œํ‚ค๋ ค๋Š” ์ž๋ฃŒํ˜•
float a = 20.07f;
printf("a = %d \n", (int)a)
#include <stdio.h>
int main() {
	
	float a = 20.07f;
	
	printf("a = %d\n", a);
	printf("a = %d\n", (int)a);
	
	return 0;
}

// ํ”„๋กœ์„ธ์Šค๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค..
> a = 1751745880
a = 20

ํ”„๋กœ์„ธ์Šค๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.