μžλ£Œν˜•

  • ν”„λ‘œκ·Έλž¨μ—μ„œ μ„ μ–Έλœ λ³€μˆ˜λ“€μ΄ κΈ°μ–΅ κ³΅κ°„μ—μ„œ μ–΄λ–»κ²Œ μ €μž₯되고 μ²˜λ¦¬λ˜μ–΄μ•Ό 할지, μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ €μ€Œ
  • μ’…λ₯˜
    • μ •μˆ˜ν˜•
    • μ‹€μˆ˜ν˜•
    • λ¬Έμžν˜•
    • μ‚¬μš©μž μ •μ˜ μžλ£Œν˜•

μ •μˆ˜ν˜•

  • μ†Œμˆ˜μ μ΄ μ—†λŠ” 숫자
  • 음의 μ •μˆ˜, 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

ν”„λ‘œμ„ΈμŠ€κ°€ μ’…λ£Œλ˜μ—ˆμŠ΅λ‹ˆλ‹€.