[3] μ μν
• μ μνμ κ°μ₯ κΈ°λ³Έμ μΈ μλ£νμΌλ‘ μ μλ₯Ό μ μ₯ν μ μλ€.
• μ μνμλ λ€μκ³Ό κ°μ μλ£νμ΄ μλ€.
• μ μν λ³μλ -∞μμ +∞κΉμ§ νννμ§ λͺ»ν¨
• λΉνΈμ κ°μ λλ¬Έμ νννλ μμ λ²μμ μ νμ΄ μλ€.
• shortν: 16λΉνΈλ‘ μ μ μ μ₯
• int, longν: 32λΉνΈ
• long longν: 64λΉνΈ
μ°Έκ³ : λΉνΈμ λ°μ΄νΈ
μ»΄ν¨ν°μμ μ¬μ©νλ μ 보μ μ΅μλ¨μλ₯Ό λΉνΈ(bit0λΌκ³ νλ€. μ»΄ν¨ν°μμλ μ΄μ§μλ₯Ό μ¬μ©νκ³ λΉνΈλ μ΄μ§μμ νλμ μλ¦Ώμκ° λμ΄ 0μ΄κ±°λ 1μΌ μ μλ€. 8κ°μ λΉνΈκ° λͺ¨μΈ κ²μ΄ λ°μ΄νΈ(byte)μ΄λ€. λΉνΈλ μ μ μ€μμΉλ‘ μμ£Ό κ°λ¨νκ² κ΅¬νν μ μλ€. μ κΈ°κ° νλ₯΄λ©΄ 1(on)μ΄λΌκ³ μκ°νκ³ μ κΈ°κ° νλ₯΄μ§ μμΌλ©΄ 0(off)μΌλ‘ μκ°νλ©΄ λλ κ²μ΄λ€.
μ°Έκ³
νμ¬ μκΈ°κ° μ¬μ©νλ μλ£νμ΄ λνλΌ μ μλ λ²μκ° μΌλ§μΈμ§λ₯Ό μκ³ μΆμΌλ©΄ limits.h ν€λ νμΌμ μ°Έκ³ νλ©΄ λλ€. μ¬κΈ°μλ μ μνλ€μ μ΅λκ°κ³Ό μ΅μκ°μ κΈ°νΈ μμλ‘ μ μν΄ λμλ€. μλ₯Ό λ€μ΄μ intνμ μ΅λκ°μ INT_MAXλ‘, μ΅μκ°μ INT_MINμΌλ‘ μ μ μλ€.
Q κ·Έλ λ€λ©΄ λ€μν μ μ νμ μ€μμ μ΄λ€ μ μ νμ μ μ¬μ©νμ¬μΌ νλκ°?
A λ§μ½ μλΉν ν° κ°(32,767μ΄μ λλ -32,767μ΄ν)λ€μ νμλ‘ νλ€λ©΄ longνμ μ¬μ©νλ κ²μ΄ μ’λ€. λ§μ½ κΈ°μ΅ κ³΅κ°μ μ€μ¬μΌ νλ€λ©΄ shortνμ μ¬μ©νλ νΈμ΄ μ 리νλ€. μΌλ°μ μΈ κ²½μ°μλ intνμ μ¬μ©νλ€. λ§μ½ μμλ₯Ό μ¬μ©νμ§ μλλ€λ©΄ unsignedνμ μ¬μ©νλ νΈμ΄ μ’λ€.
unsigned μμμ
• unsignedλ λ³μκ° μμκ° μλ κ°λ§μ λνλΈλ€λ κ²μ μλ―Έ
• μμκ° μ μΈλλ©΄ κ°μ λΉνΈλ‘ λ λμ λ²μμ μμλ₯Ό λνλΌ μ μλ€λ μ₯μ μ΄ μλ€.
• μλ₯Ό λ€μ΄
short | -32768 ~ +32767 |
unsigned short | 0 ~ 65535 |
• λͺ κ°μ§μ μλ₯Ό μλμ 보μλ€.
1 2 | unsigned int speed; // λΆνΈ μλ intν λ³μ speed unsigned speed; // μ΄λ κ² ν΄λ λλ€. | cs |
μ°Έκ³
unsignedλΌκ³ λ§ μ°λ©΄ unsigned intνμ μλ―Ένλ€. λν shortνμ short intλΌκ³ μΈ μλ μλ€. λ§μ°¬κ°μ§λ‘ longνμ
long int λΌκ³ μΈ μλ μλ€.
μ€λ²νλ‘μ°
• μ μν λ³μλ₯Ό μ΄μ©νμ¬ μ°μ μ°μ°μ νλ κ²½μ°, μ°μ μ°μ°μ κ²°κ³Όκ° μ μνμ΄ λνλΌ μ μλ λ²μλ₯Ό λμ΄κ° μλ μλ€.
• μ€λ²νλ‘μ°(overflow): λ³μκ° λνλΌ μ μλ λ²μλ₯Ό λλ μ«μλ₯Ό μ μ₯νλ €κ³ ν λ λ°μνλ€.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> #include <limits.h> int main(void) { short s_money = SHRT_MAX;// μ΅λκ°μΌλ‘ μ΄κΈ°ννλ€. unsigned short u_money = USHRT_MAX; // μ΅λκ°μΌλ‘ μ΄κΈ°ννλ€. printf("s_money = %d\n", s_money); printf("u_money = %d\n", u_money); s_money = s_money + 1; printf("s_money = %d\n", s_money); u_money = u_money + 1; printf("u_money = %d\n", u_money); return 0; } | cs |
• λ³μμ κ°μ΄ λ³μκ° μ μ₯ν μ μλ νκ³λ₯Ό λ²μ΄λλ©΄ μλμ°¨μ μ£Όν 거리κ³μ²λΌ λ€μ μ²μμΌλ‘ λμκ°μ μμνλ€.
• μ μνμμ μ€λ²νλ‘μ°κ° λ°μνλλΌλ μ»΄νμΌλ¬λ μλ¬΄λ° κ²½κ³ λ₯Ό νμ§ μλλ€. λ°λΌμ νλ‘κ·Έλλ¨Έκ° μ μνμ μ¬μ©ν λλ μ€λ²νλ‘μ°κ° μΌμ΄λμ§ μλλ‘ μ£Όμνμ¬μΌ νλ€.
μ μΆλ ₯ νμ μ§μ μ
printf() ν¨μλ scanf() ν¨μμμ μ μνμ μ μΆλ ₯νλ νμ μ§μ μλ λ€μκ³Ό κ°λ€.
μλ£ν | νμ μ§μ μ | μ€λͺ |
short | %hi | μ λ ₯ν λλ %hiλ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€, μΆλ ₯μμλ %dλ κ°λ₯νλ€. |
int | %d | x |
long | %ld | x |
long long | %lld | νΉν μ λ ₯ν λλ λ°λμ %lldλ₯Ό μ¬μ©νμ¬μΌ νλ€. μΆλ ₯ μμλ %lldλ₯Ό μ¬μ©νμ¬μΌ νλ€. |
μ μν μμ
• μ μ μμλ 12λ 100κ³Ό κ°μ΄ νλ‘κ·Έλ¨ μμ μ§μ μ λ ₯νλ©΄ λλ€.
• μ μ μμλ κΈ°λ³Έμ μΌλ‘ intνμΌλ‘ κ°μ£Όλλ€.
• λ§μ½ μμμ μλ£νμ νλ‘κ·Έλλ¨Έκ° μ§μ νκ³ μΆμ κ²½μ°λ μ λ―Έμ¬λ₯Ό λΆμΈλ€.
• 123Lμ²λΌ μ μ μμ λ€μ μ λ―Έμ¬λ‘ Lμ λΆμ΄λ©΄ 123μ΄λΌλ μμλ₯Ό longν(32λΉνΈ)μΌλ‘ κ°μ£Όνλ€.
[μ μ μμ]
μ λ―Έμ¬ | μλ£ν | μ |
u λλ U | unsigned int | 123u λλ 123U |
l λλ L | long | 123l λλ 123L |
ul λλ UL | unsigned long | 123ul λλ 123UL |
• μ μ μμλ 10μ§λ²λΏλ§ μλλΌ 8μ§λ²μ΄λ 16μ§λ²μΌλ‘λ νκΈ°κ° κ°λ₯νλ€.
• μ μ μμλ₯Ό 8μ§λ²μΌλ‘ νκΈ°νλ €λ©΄ μμ 0μ λΆμ΄λ©΄ λλ€.
• 16μ§λ²μΌλ‘ μ μ μμλ₯Ό νκΈ°νλ €λ©΄ μμ 0xλ₯Ό λΆμ΄λ©΄ λλ€.
• 16μ§λ²μ 0μμ 9κΉμ§μ 10κ°μ μ«μμ A, B, C, D, E, FκΉμ§ 6κ°μ λ¬Έμλ₯Ό μΆκ°νμ¬ μλ₯Ό νννλ λ°©λ²μ΄λ€.
• μλ₯Ό λ€μ΄μ 41719λ₯Ό 16μ§μλ‘ λνλ΄λ³΄λ©΄ 0xA2F7μ΄ λλ€.
• μλ₯Ό λνλ΄λλ° Aμ Bμ κ°μ λ¬Έμλ₯Ό μ¬μ©νλ κ²μ΄ μ²μμλ μμν΄λ³΄μΌ κ²μ΄λ€. νμ§λ§ νλμ¨μ΄ κ΄λ ¨νμ¬ λΉνΈ μ‘°μμ ν λλ 10μ§λ²λ³΄λ€ 16μ§λ²μ΄ ν¨μ¬ μ¬μ©νκΈ°κ° νΈλ¦¬νλ€.
• 2μ§μμ 16μ§μλ μλΉν κ΄λ ¨μ΄ μλ€. 16μ§μμμ νλμ μλ¦Ώμλ 4λΉνΈμ ν΄λΉνλ€. λ°λΌμ 0κ³Ό 1λ‘ λμ΄ μλ λ°μ΄ν°λ₯Ό 16μ§μλ‘ νκΈ°νκ² λλ©΄ μμλ³΄κΈ°κ° μ½λ€.
0x0f(16μ§μ) ↔ 0000 1111(2μ§μ)
• λ€μ νλ‘κ·Έλ¨μ μ μ μμ 128μ 10μ§μ, 16μ§μ, 8μ§μλ‘ μΆλ ₯ν΄λ³Έ κ²μ΄λ€.
1 2 3 4 5 6 7 | #include <stdio.h> int main(void) { printf("%d %#x %#o \n", 128, 128, 128); return 0; } | cs |
• μ μνμ κ°μ μΆλ ₯νκ±°λ μ λ ₯νλ €λ©΄ νμ μ§μ μλ‘ "%d"λ₯Ό μ¬μ©νλ€.
• 8μ§μλ 16μ§λ²μΌλ‘ μ μλ₯Ό μΆλ ₯ν λ μ¬μ©νλ νμμ§μ μ: "%#o", "%#x"λ₯Ό μ¬μ©νλ€.
κΈ°νΈ μμ(#define μ΄μ©)
• 보ν΅μ μμμλ λ³μμλ λ¬λ¦¬ μ΄λ¦μ΄ μλ€. κ·Έλ¬λ μμμλ μ΄λ¦μ λΆμΌ μ μλ λ°©λ²μ΄ μλ€.
• κΈ°νΈ μμ(symbolic constant)λ κΈ°νΈμ μνμ¬ μμλ₯Ό ννν κ²μ΄λ€.
• μ΄λ¦ μλ μμλ 리ν°λ΄ μμ(literal)λΌκ³ νλ€. μλ₯Ό λ€μ΄μ νμ¬μ νμ¨ 1120μ κΈ°νΈ μμ EXCHANGE_RATEλ‘ ννν΄λ³΄μ.
#define EXCHANGE_RATE 1120
• λ³΄ν΅ #define λ¬Έμ₯μ νλ‘κ·Έλ¨μ 맨 첫 λΆλΆμ λͺ¨μ¬ μλ€. #defineμ΄ λ€μ΄κ°λ λ¬Έμ₯μ μ μ²λ¦¬κΈ°(preprocessor)κ° μ²λ¦¬νλ€. μ μ²λ¦¬κΈ°λ μ½λμμ EXCHANGE_RATEλ₯Ό μ λΆ μ°Ύμμ 1120μΌλ‘ λ°κΎΌλ€.
• κΈ°νΈ μμλ μμ κ°μ κ·Έλλ‘ μ°λ λ°©λ²(리ν°λ΄ μμ)μ λΉνμ¬ λͺ κ°μ§μ μ₯μ μ μ§λλ€.
1. κΈ°νΈ μμλ₯Ό μ΄μ©νλ©΄ νλ‘κ·Έλ¨μ μ½κΈ°κ° μ¬μμ§λ€.: μλμ λ¬Έμ₯ (1)μμλ 1120μ΄ λ¬΄μμ μλ―Ένλμ§ μ½κ² μ μ μλ€. κ·Έλ¬λ λ¬Έμ₯ (2)μμλ νμ¨μ΄λΌλ κ²μ μ½κ² μ μ μλ€.
won = 1120 * dollar; // (1) μ€μ μ κ°μ μ¬μ©
won = EXCHANGE_RATE * dollar; // (2) κΈ°νΈμμ μ¬μ©
2. νλ‘κ·Έλ¨μ΄ λμΌν μμλ₯Ό μ¬λ¬ κ³³μμ μ¬μ©νκ³ μλ κ²½μ°μ, μμ κ°μ λ³κ²½μ μ½κ² ν μ μλ€λ κ²μ΄λ€. μμ μμμ νμ¨μ΄ 1050μΌλ‘ λ³κ²½λμλ€κ³ κ°μ νμ. λ§μ½ μ«μλ₯Ό μ¬μ©νλ€λ©΄ νλ‘κ·Έλ¨μμ κ·Έ μ«μκ° μ¬μ©λ λͺ¨λ κ³³μ μ°Ύμμ κ°μ λ³κ²½νμ¬μΌ νλ€, κ·Έλ¬λ κΈ°νΈ μμλ₯Ό μ¬μ©νλ€λ©΄ κΈ°νΈ μμμ μ μλ§ λ³κ²½νλ©΄ λλ€.
κΈ°νΈ μμ(const μ΄μ©)
• κΈ°νΈ μμλ₯Ό λ§λλ λ νλμ λ°©λ²μ΄ μλ€. λ³μ μ μΈ μμ constλ₯Ό λΆμ΄λ©΄ μμκ° λλ€.
• constλ "constant"μ μ½μλ‘μ λ³κ²½λμ§ μλλ€λ μλ―Έμ΄λ€.
const int EXCHANGE_RATE = 1120;
• μμ μ½λμμ EXCHANGE_RATEλ μμλ‘μ 1120μ λνλΈλ€. constλ‘ μ μΈλ λ³μλ λ± ν λ²λ§ κ°μ μ μ₯ν μ μλ€.
'1νλ (2023) > C μΈμ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C] Study: λ³μμ μλ£ν - (5) λ¬Έμν (0) | 2023.08.18 |
---|---|
[C] Study: λ³μμ μλ£ν - (4) λΆλμμμ ν (0) | 2023.08.17 |
[C] Study: λ³μμ μλ£ν - (2) μλ£ν (0) | 2023.08.12 |
[C] math.h λΌμ΄λΈλ¬λ¦¬ (0) | 2023.07.16 |
[C] C study mini project: ν¨μ - μμ μΆλ ₯ νλ‘κ·Έλ¨ (0) | 2023.07.15 |