C Programming Language/C

C์–ธ์–ด ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ (2)

567Rabbit 2024. 6. 12. 21:21

https://codebunny99.tistory.com/162

 

C์–ธ์–ด ๋ณ€์ˆ˜์— ๋Œ€ํ•ด ํ•™์Šตํ•˜๊ธฐ

๋ณ€์ˆ˜๋ž€ ?  - ํ”„๋กœ๊ทธ๋žจ์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์‹œ์ ์œผ๋กœ ์ €์žฅํ•  ๋ชฉ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์ด๋‹ค.- ์‹คํ–‰ ๋„์ค‘์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.  ๋ณ€์ˆ˜๋Š” ์™œ ํ•„์š”ํ•œ๊ฐ€? - ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ๋˜๋ฉด ์–ด๋”˜๊ฐ€์—

codebunny99.tistory.com

 

 

๋ถ€ํ˜ธ ์—†๋Š” ์ •์ˆ˜( ์–‘์ˆ˜, ์ ˆ๋Œ“๊ฐ’๋งŒ ์กด์žฌํ•œ๋‹ค.)  - unsigned๋ฅผ ๋ถ™์ด๋ฉด ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ฐจ์ง€ํ•˜๋Š” ์šฉ๋Ÿ‰์ด ์ค„์–ด๋“ ๋‹ค.

 

unsigned short

unsigned int

unsigned long

unsigned long long

 

 

 

 

์ƒ์ˆ˜๋ฅผ type์œผ๋กœ ์ €์žฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ?

 

ex)

sum = 123L;  => long type์œผ๋กœ ์„ ์–ธํ•œ ๊ฒƒ์ด๋‹ค.

 

<์ •์ˆ˜ํƒ€์ž…>

  • L ๋˜๋Š” l: long
  • LL ๋˜๋Š” ll: long long
  • U ๋˜๋Š” u: unsigned int
  • UL, Lu, ul, lu, LU, lU, Ul, uL: unsigned long
  • ULL, ull, LLU, llu: unsigned long long

 

<์‹ค์ˆ˜ํƒ€์ž…>

  • F ๋˜๋Š” f: float
  • L ๋˜๋Š” l: long double

 

 

 

 

 

๋ณ€์ˆ˜์˜ ์ข…๋ฅ˜(data type) = ์ž๋ฃŒํ˜•  ( ๋ณดํ†ต 4๋ฐ”์ดํŠธ ) 

 

- ์ •์ˆ˜ํ˜• ( short, int, long, long long ) 2, 4, 8, 8 byte 

- ์‹ค์ˆ˜ํ˜• ( float, double, long double ) 4, 8, 8 byte

- ๋ฌธ์žํ˜• ( char ) 1 byte

 

** ๋ณ€์ˆ˜๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•œ๋‹ค.

 

ex)

sum = 0;  (๋ณ€์ˆ˜ ์ดˆ๊ธฐํ™” ํ•ด์•ผํ•จ !!!)

 

scanf("%d %d %d", &x, &y, &z);

 

sum += x;

sum += y;

sum += z;

 

 

 

 

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

 

: ๋ณ€์ˆ˜๊ฐ€ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ์ˆซ์ž๋ฅผ ์ €์žฅํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

: 16๋ฐ”์ดํŠธ ์งœ๋ฆฌ๋ฅผ 4๋ฐ”์ดํŠธ๋กœ ์ €์žฅํ•˜๋ ค๊ณ  ํ•˜๋ฉด, ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋กœ ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ์ €์žฅ๋˜๋Š” 

  ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

 

 

 

 

10์ง„๋ฒ•, 8์ง„๋ฒ•, 16์ง„๋ฒ•

 

2์ง„์ˆ˜ (์ค‘์š”) 10์ง„์ˆ˜ 8์ง„์ˆ˜ 16์ง„์ˆ˜ (์ค‘์š”)
0 0 00 0x0
1 1 01 0x1
10 2 02 0x2
11 3 03 0x3
100 4 04 0x4
101 5 05 0x5
110 6 06 0x6
111 7 07 0x7
1000 8 010 0x8
1001 9 011 0x9
1010 10 012 0xa
1011 11 013 0xb
1100 12 014 0xc
1101 13 015 0xd
1110 14 016 0xe
1111 15 017 0xf
10000 16 020 0x10
10001 17 021 0x11
10010 18 022 0x12

 

 

int x = 10;  // 10์€ 10์ง„์ˆ˜์ด๊ณ  intํ˜•์ด๊ณ  ๊ฐ’์€ ์‹ญ์ง„์ˆ˜๋กœ 10์ด๋‹ค

int y = 010; // 010์€ 8์ง„์ˆ˜์ด๊ณ  intํ˜•์ด๊ณ  ๊ฐ’์€ ์‹ญ์ง„์ˆ˜๋กœ 8์ด๋‹ค

int z = 0x10 // 0x10์€ 16์ง„์ˆ˜์ด๊ณ  intํ˜•์ด๊ณ  ๊ฐ’์€ ์‹ญ์ง„์ˆ˜๋กœ 16์ด๋‹ค

 

 

 

 

 

๊ธฐํ˜ธ ์ƒ์ˆ˜(symbolic constant)

 

: ๊ธฐํ˜ธ๋ฅผ ์ด์šฉํ•˜์—ฌ ์ƒ์ˆ˜๋ฅผ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค

ex)

PI = 3.14...

#include <stdio.h>
#define TAX_RATE 0.2  // define๋ฌธ์„ ๋งคํฌ๋กœ๋ผ๊ณ  ํ•œ๋‹ค. 

// ๋ฐ‘์— MONTHS๋ณด๋‹ค define๋ฌธ์œผ๋กœ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•จ

int main(void)
{
	const int MONTHS = 12;
    int m_salary, y_salary;
    
    printf("์›”๊ธ‰์„ ์ž…๋ ฅํ•˜์„ธ์š”")
    scanf("%d", &m_salary);
    y_salary = MONTHS * m_salary;
    
    printf("์—ฐ๋ด‰์€ %d์ž…๋‹ˆ๋‹ค", y_salary);
    printf("์—ฐ๋ด‰์€ %f์ž…๋‹ˆ๋‹ค", y_salary*TAX_RATE);
    
    return 0;
}

 

 

 

 

์‹ค์ˆ˜๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

 

1. ๊ณ ์ • ์†Œ์ˆ˜์  ๋ฐฉ์‹

: ์ •์ˆ˜๋ถ€๋ถ„ + ์†Œ์ˆ˜๋ถ€๋ถ„

 

ex) 85.125 = 85(์ •์ˆ˜๋ถ€๋ถ„) + 0.125(์†Œ์ˆ˜๋ถ€๋ถ„) ์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

 

 

2. ๋ถ€๋™ ์†Œ์ˆ˜์  ๋ฐฉ์‹

- ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„๊ฐ€ ๋Œ€ํญ ๋Š˜์–ด๋‚œ๋‹ค.

 

 

 

 

๋ถ€๋™ ์†Œ์ˆ˜์  ์ƒ์ˆ˜

 

์‹ค์ˆ˜ ์ง€์ˆ˜ ํ‘œ๊ธฐ๋ฒ• ์˜๋ฏธ
123.45 1.2345e2 1.2345 x 10^2
12345.0 1.2345e4 1.2345 x 10^4
0.000023 2.3e-5 2.3 x 10^-5
2,000,000,000 2.0e9 2.0 x 10^9

 

 

 

 

 

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

 

- ๋ฌธ์žํ˜•์„ mapping ์‹œ์ผœ๋†“์€ ํ‘œ์ด๊ณ , ์ปดํ“จํ„ฐ๋Š” 2์ง„์ˆ˜๋กœ ์ฝ๋Š”๋‹ค.

 

#include <stdio.h>

int main(void)
{
	char code1 = 'A'
    char code2 = 65;

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

    // ์ถœ๋ ฅ๊ฒฐ๊ณผ ๋‘˜ ๋‹ค "A"๋กœ ์ถœ๋ ฅ๋œ๋‹ค.
    // code1 = A
    // code2 = A
}