π οΈBackend/βοΈC
[CμΈμ΄] μ μΆλ ₯ ν¨μμ μ°μ°μ(2)
junbin2
2025. 10. 3. 12:38
β 1. μ°μ μ°μ°μ
(1) μ°μ°μμ κ°λ

(2) μ°μ μ°μ°μ
- μ¬μΉμ°μ°μ ν¬ν¨ν μ°μ μ°μ°μ μννλ μ°μ°μλ₯Ό μλ―Ένλ€.

- νΌμ°μ°μκ° 1κ° μΌλ λ¨ν μ°μ°μ, 2κ° μ΄μμΌ λ μ΄ν μ°μ°μλ‘ κ΅¬λΆλ¨.
[ μ΄ν μ°μ°μ ]

- μ°μ°μκ° λ§μ μΌλ‘ μλ£νμ λ²μλ₯Ό λ²μ΄λλ μ€λ²νλ‘κ° μΌμ΄λμ§ μλλ‘ μ£Όμν΄μΌ ν¨
- λλμ μ μ μ μ¦, x λλκΈ° 0 λ λΆκ°λ₯ ν¨.

- μ μνμλ§ μ¬μ©μ΄ κ°λ₯ν μ°μ°μμ΄λ€.
- λλ¨Έμ§μ μ μλ μ μμ μμμ μλλ₯Ό λ²λ¦¬λ λ°©μμΌλ‘ λ¨.
[ μ΄ν μ°μ°μ μμ ]

[ λ¨ν μ°μ°μ ]

β 2. κ΄κ³ μ°μ°μμ λ Όλ¦¬ μ°μ°μ
(1) λΆ κ°μ νν

(2) κ΄κ³ μ°μ°μ

[ κ΄κ³ μ°μ°μμ μ¬μ© μ ]

- a κ° 4 μΈ κ²½μ° a > 2 μ λν κ°μΌλ‘λ μ°Έ κ°μΈ 1 μ΄ λ€μ΄κ°κ² λλ€. λ°λλ‘ κ±°μ§μΌ κ²½μ° 0 μ΄ λ€μ΄κ°λ€.
[ μ 리 ]
- κ΄κ³ μ°μ°μλ λμ²΄λ‘ μ μλ μ΄λ° κ°λ€μ λν κ΄κ³λ₯Ό true 1, false 0 μΌλ‘ λ°ννκΈ° μν¨μ.
(3) λ Όλ¦¬ μ°μ°μ

- and , or , not λ Όλ¦¬ μ°μ°μ νκΈ° μν μ°μ°μ μ΄λ©°, λΉνΈ μ°μ°μμλ & μ΄λ°μμΌλ‘ νλλ§ μ°μ
[ λ Όλ¦¬ μ°μ°μμ μ¬μ© μμ ]

[ μ£Όμ μ¬ν ]

- λ Όλ¦¬ μ°μ° κ³Όμ μμ μ°Έ κ±°μ§ νμ λλ©΄ λλ¨Έμ§ λΆλΆμ μ€ννμ§ μλλ€.
- μ½κ²λ§ν΄, μ΄λ―Έμ§ μμλ₯Ό 보면 and μ°μ°μκ° μ¬λ¬κ° μ΄κ³ μ€κ°μ b++ <= 5 μ κ°μ΄ false κ° μλ κ²½μ° λ€μ --c > 0 κ΄κ³ μ°μ°μ λ³΄μ§ μκ³ λ°λ‘ λμ΄κ°κ² λλ€λ κ²μ μλ―Ένλ κ²μ΄λ€.
- μ¦, κ²°κ³Όλ b++ <= 5 μμ κ±°μ§μ΄ λμκΈ° λλ¬Έμ ν΄λΉ μ°μ°μ μ€ν ν κ² μΌλ‘ μ μ μμ΄ κ²°κ³Όμ μΌλ‘ b λ ++ μ¦κ° λ 7 -> 8 μ΄ λμ¬ κ²μ΄κ³ , --c > 0 μ μ°μ°μ΄ μνλμ§ μμμΌλ―λ‘, 9κ° μλ μλ cμ κ°μΈ 10μ΄ μΆλ ₯μ΄ λλ κ²μ΄λ€.
- λ Όλ¦¬μμ΄ μ°ΈμΌ κ²½μ°λ μμ μμ΄μΌ μ’ λ κ²°κ³Όκ°μ 빨리 μ»μ μ μλ€λ μλ―Έκ° λ μ μμ.
[ μ 리 ]
- λ Όλ¦¬ μ°μ°μλ true, false μ κ°μ λ Όλ¦¬ λ°μ΄ν° κ°μ λ Όλ¦¬ μ°μ°μ μν μ°μ°μμ.
- μ¦, κ΄κ³μ°μ°μλ₯Ό ν΅ν΄μ μ»μ κ° λ€μ λ Όλ¦¬μ°μ° λ±μ μν ν μ μμ.
(4) 쑰건 μ°μ°μ

- expr1 쑰건μμ΄ μ°ΈμΈ κ²½μ° expr2 κ° μ€νλκ³ , κ±°μ§μΈ κ²½μ° expr3 μ΄ μ€νμ΄ λλ€.

- μ λ ₯κ° λ μ€ μ΅λκ°μ ꡬνλ λ‘μ§μΌλ‘ λ³Ό μ μμΌλ©°, μΌν μ°μ°μλ₯Ό μ΄μ©ν΄ a >= b κ΄κ³ μ°μ°μμ μ°ΈμΈ κ²½μ° a μΆλ ₯ κ±°μ§μΈ κ²½μ°μλ b λ₯Ό μΆλ ₯νλ λ‘μ§μ.
β 3. λμ μ°μ°μ

- μ’μΈ‘μ κ°(r-value) λ₯Ό μ°μΈ‘μ μ μ₯곡κ°(l-value) μ λ£λλ€. μ¦, = λ₯Ό ν΅ν΄μ λμ μ ν΄μ£Όλ μ°μ°μ μλ―Έν¨.

- λμ μ°μ°μλ μ€λ₯Έμͺ½ μ°μ°μ λ¨Όμ ν λ€ λμ μ ν΄μ£Όκ² λλ€. μ¦, c = b = a λ a -> b -> c μ κ²°κ³Όλ₯Ό μ μ₯νκ² λ¨.
- float λ int λ‘ λ³νμ΄ λλ©΄μ, μμμ μλκ° λ λΌκ°κ² λ¨ μ¦, c μ κ²°κ³Όλ 1.0000.. μ΄ λμ€κ² λ¨.
(1) λ³΅ν© λμ μ°μ°μ

- μ½κ²λ§ν΄, λμ μ°μ°μμ μ°μ μ°μ°μμ κ°μ μΌλ°μ μΈ μ°μ°μμ κ²°ν©λ ννλ₯Ό λ³΅ν© λμ μ°μ°μλΌκ³ νλ€.

- μμλ₯Ό 보면 *= , /= , += μ κ°μ΄ λμ μ°μ°μμ ν¨κ» μ¬μ© ν μ μλλ° μ΄κ±Έ λ³΅ν© λμ μ°μ°μλ‘ λ³Ό μ μμ.
β 4. λΉνΈ μ°μ°μ

(1) λΉνΈ μ°μ°μ μμ

- and(&) μ°μ°: x μ y κ°κ° λΉνΈλ₯Ό λΉκ΅νμ¬, and λ Όλ¦¬κ³±μ μνν΄μ κ²°κ³Όλ₯Ό λμΆν΄μ€.
- or(|) μ°μ°: x μ y κ°κ° λΉνΈλ₯Ό λΉκ΅νμ¬, or λ Όλ¦¬ν©μ μνν΄μ κ²°κ³Όλ₯Ό λμΆν΄μ€.
- XOR(^) μ°μ°: x μ y κ°κ° λΉνΈλ₯Ό λΉκ΅νμ¬, XOR λ Όλ¦¬μ°μ°μ μνν΄μ κ²°κ³Ό λμΆ
- NOT(~) μ°μ°: x μ 1μΈ λΉνΈλ λͺ¨λ 0μΌλ‘ 0μΈ λΉνΈλ λͺ¨λ 1λ‘ λ³κ²½μ ν΄μ€.
- μννΈ(<<) μ°μ° : 맨 μ’μΈ‘μ 2κ°μ λΉνΈλ μ¬λΌμ§κ³ μ€λ₯Έμͺ½μ λΉνΈ 2κ°κ° 0μΌλ‘ μ±μμ§λ λΉνΈ μ°μ°μ΄λ€.
- μννΈ(>>) μ°μ° : λ°λλ‘ λ§¨ μ°μΈ‘μ 2κ°μ λΉνΈλ μ¬λΌμ§κ³ μΌμͺ½μ λΉνΈ 2κ°κ° 0μΌλ‘ μ±μμ§λ λΉνΈ μ°μ°μ΄λ€.
(2) λΉνΈ μ°μ°μμ νμ©
int x = 0b10101100; // 172
int mask = 0b00001111; // νμ 4λΉνΈλ§ λ¨κΈ°λ λ§μ€ν¬
int result = x & mask;
// and μ°μ°μ ν΅ν΄ λΉνΈ λΉκ΅
- λΉνΈ λ§μ€ν¬: νΉμ λΉνΈλ§ μΆμΆνκ±°λ, λ³κ²½νκ±°λ, κ²μ¬νκΈ° μν΄ λΉνΈ μ°μ°μλ₯Ό ν¨κ» μ¬μ©νλ ν¨ν΄μ μλ―Έν¨.

- νΉμ λΉνΈλ§ 0μΌλ‘ μ§μ°κΈ°μ κ°μ΄ λΉνΈμ°μ°μλ μ μ©νκ² μ°μΌ μ μμ.
- μμ κ°μ΄ mask λ₯Ό νμ©νλ©΄, νΉμ λΆλΆμ 0μ λ£κ² λλ©΄ λ Όλ¦¬κ³±(and) μ ν΅ν΄ λ°λμ 0μ΄ λκ² λ§λ€ μ μμ.
- μλκ°μ μ μ§νλ νΉμ κ°λ§ 0μΌλ‘ λ³κ²½νκ³ μΆμ λ μ¬μ© ν μ μμ. λΉνΈ μ°μ°μλ‘λ μ΄λ¬ν ννμ μ°μ°μ ν μ μμ.

- λν, λ Όλ¦¬ν©μ ν΅ν΄ νΉμ λΉνΈλ₯Ό 1λ‘ μ±μ°λ κ²λ κ°λ₯ν¨.

- λ°μ μ νκ³ μΆμ λΉνΈ λΆλΆμλ 1μ μ±μλ£κ² λλ©΄ XOR μ°μ°μ ν΅ν΄ λ°μ μν¬ μ μμ.
[ μννΈ μ°μ° ]

- 2^n κ³±νκΈ° λ§νΌ μΌμͺ½μΌλ‘ λΉνΈλ₯Ό μ΄λ ν μ μμ.
- x << 3 μΈ κ²½μ° 2^3 λ§νΌ λΉνΈλ₯Ό μ΄λνλ κ²μ. μ΄μ λ, μ΄μ§μλ μ리 μμ λ§κ² μ§μκ° λμ΄λκΈ° λλ¬Έμ.
- μννΈ(<<) μ°μ° : 맨 μ’μΈ‘μ 2κ°μ λΉνΈλ μ¬λΌμ§κ³ μ€λ₯Έμͺ½μ λΉνΈ 2κ°κ° 0μΌλ‘ μ±μμ§λ λΉνΈ μ°μ°μ΄λ€.

- μμ λμΌνκ² 2^n κ³±νκΈ° λ§νΌ μ€λ₯Έμͺ½μΌλ‘ λΉνΈλ₯Ό μ΄λ ν μ μμ.
- μννΈ(>>) μ°μ° : λ°λλ‘ λ§¨ μ°μΈ‘μ 2κ°μ λΉνΈλ μ¬λΌμ§κ³ μΌμͺ½μ λΉνΈ 2κ°κ° 0μΌλ‘ μ±μμ§λ λΉνΈ μ°μ°μ΄λ€.
β 5. κΈ°ν μ°μ°μ

- sizeof(): ν΄λΉ μμ΄ μ°¨μ§νλ κΈ°μ΅κ³΅κ°μ ν¬κΈ°μΈ byte ν¬κΈ°λ₯Ό ꡬν΄μ λ°νμ ν΄μ€λ€.
- νλ³ν μ°μ°μ: μμ μλ£νμ λ€λ₯Έ μλ£νμΌλ‘ κ°μ λ‘ νμ λ°κΏ
- , : μ»΄λ§ κΈ°νΈλ λ κ°μ μμ νλλ‘ λ¬Άμ΄μ£Όλ κ²
- & : νΌμ°μ°μμ μ£Όμλ₯Ό ꡬν΄μ£Όλ μ°μ°μ
- * : ν¬μΈν°κ° κ°λ¦¬ν€λ κ³³ λλ κ·Έκ³³μ λ΄μ©μ κ°λ¦¬ν€λ μ°μ°μμ.
(1) sizeof() μ°μ°μ

int main() {
int a = 10;
double b = 3.14;
printf("aμ ν¬κΈ°: %zu bytes\n", sizeof(a));
printf("bμ ν¬κΈ°: %zu bytes\n", sizeof(b));
return 0;
}
// μΆλ ₯ κ²°κ³Ό
// aμ ν¬κΈ°: 4 bytes
// bμ ν¬κΈ°: 8 bytes
- Cμμ sizeofλ **ν¨μκ° μλλΌ μ°μ°μ(operator)**μ΄λ€.
- κ²λ³΄κΈ°μλ sizeof(λ³μλͺ )μ²λΌ κ΄νΈλ₯Ό μ¬μ©ν΄μ ν¨μμ²λΌ 보μ΄μ§λ§, μ»΄νμΌ μμ μ νμ μ ν¬κΈ°λ₯Ό κ³μ°νλ μ°μ°μμ.
- μ¦, μ€ν μ€(λ°νμ)μ λμνλ ν¨μκ° μλλΌ, μ»΄νμΌ λμμ μ»΄νμΌλ¬κ° 미리 κ³μ°μ ν΄μ€.
(2) μ½€λ§ μ°μ°μ

- λ κ° μ΄μμ μ(expression)μ μμλλ‘ μ€ννκ³ , λ§μ§λ§ μμ κ²°κ³Όκ°μ λ°ννλ μ°μ°μμ΄λ€.
#include <stdio.h>
int main() {
int a = 1, b = 2, result;
result = (a += 2, b += 3); // aλ λ¨Όμ 3μ΄ λκ³ , bλ 5κ° λ¨
printf("a = %d, b = %d, result = %d\n", a, b, result);
return 0;
}
// μΆλ ₯: a = 3, b = 5, result = 5
- a μ΄κΈ°κ° 1, b μ΄κΈ°κ° 2 μνμμ a += 2, b += 3 μ μ½€λ§λ‘ λ¬Άμ΄μ result λ³μ μ΄κΈ°ννλ κ³Όμ μ΄λ€.
- μ΄ κ³Όμ μμ μ½€λ§λ‘ λ¬ΆμΈ λΆλΆμλ a = 1 + 2 = 3 , b = 2 + 3 = 5 -> a = 3 , b = 5 κ° λ κ²μ΄λ€.
- μ½€λ§ μ°μ°μμ κ°μ λ§μ§λ§ μμ κ°μ΄κΈ° λλ¬Έμ result λ³μμ λ΄κΈ°λ κ°μ b μ 5κ° λ΄κΈΈ κ²μ΄λ€.
- μ¦, κ²°κ³Όλ a, b, result λ³μλ₯Ό μ°μΌλ©΄ κ° 3, 5, 5 κ° λ κ²μ΄λ€.
[ μ½€λ§ μ°μ°μ μ¬μ© μ΄μ ]
- ν μ€ μμμ μ¬λ¬ ννμμ μμλλ‘ μ€νν΄μΌ ν λ κ΅μ₯μ΄ μ μ©νκ² μ°μ
- μ¦, ν λ¬Έμ₯ μμ μ¬λ¬ κ³μ°μ λ£λ, λ§μ§λ§ κ²°κ³Όλ§ μ¬μ©νκ³ μΆμ λ μ¬μ©νλ λκ΅¬λ‘ λ³΄λ©΄ λ¨.
- λνμ μΌλ‘λ forλ¬Έ(λ°λ³΅λ¬Έ) μμ μ¬μ©μ ν μ μμ.
#include <stdio.h>
int main() {
int i, j;
for (i = 0, j = 4; i < 5; i++, j--) {
printf("[%d, %d]\n", i, j);
}
}
// result:
// [0, 4]
// [1, 3]
// [2, 2]
// [3, 1]
// [4, 0]
- for λ¬Έμ ꡬμ±μ for(μ΄κΈ°μ; 쑰건μ; μ¦κ°μ) ννλ‘ κ΅¬μ±μ΄ λμ΄ μμ.
- μ½€λ§ μ°μ°μλ₯Ό νμ©νκ² λλ©΄ μ΄κΈ°μ λΆλΆμ λ³μλ₯Ό μ΄κΈ°ν ν λ i, j λ λ€ κ°μ΄ μ΄κΈ°νλ₯Ό μμΌμ€ μ μμ.
- λν, λ§μ§λ§ λ§€ λ°λ³΅ λλ λλ§λ€ μ€νλλ μ¦κ°μμ ν΅ν΄ 루ν λ³μ κ°μ λ³κ²½ ν μ μλλ°, μ΄ λ μ½€λ§ μ°μ°μλ₯Ό νμ©νλ©΄ μ΄κΈ°μμμ μ΄κΈ°νν λ³μ λ κ°λ₯Ό μ¦κ° μν€κ±°λ κ°μμν¬ μ μκ² λ¨.
- μ΄λ κ² λ°λ³΅λ¬Έμμ μ½€λ§ μ°μ°μλ₯Ό μ¬μ©νκ² λλ©΄ ν μ€μμ μ¬λ¬ λ³μλ₯Ό λμμ μ μ΄ν μ μκ² λ¨.
- μ¦, λ³λμ μ€μ²© 루νλ μΆκ° λ¬Έμ₯ μμ΄ ν μ€λ‘ νν κ°λ₯νκ³ κ°λ μ±μ΄ μ΄λ μ λ μ μ§λλ νμμ μ½λ μ€ μ κ°μκ° λ¨.
(3) νλ³ν

[ νλ³ν(type cast) μ΄λ? ]
- μμ μλ£νμ λ€λ₯Έ μλ£νμΌλ‘ λ°κΎΈλ κ²μ μλ―Έν¨.
- νλ³ν μ°μ°μ: λͺ μμ μΌλ‘ νλ³νμ μ§μνλ μ°μ°μμ΄λ©°, μμ νμμ²λΌ () κ΄νΈλ₯Ό ν΅ν΄ νμ μ λ£μ΄μ£Όλ κ²μ μλ―Έν¨.

- μμ κ°μ΄ 3 / 4 λ₯Ό λλκ² λλ©΄, 0.7... μ΄ λλλ° μ μν μ΄κΈ° λλ¬Έμ μμμ μλλ₯Ό μμ λ²λ¦Ό μ¦, 0μ΄ λμ΄
- κ·Έλ¦¬κ³ double c λ‘ λ°κ² λλ©΄ μ΄λ―Έ μμμ μλλ₯Ό μμ΄λ²λ¦° μνλ‘ λ€μ΄μκΈ° λλ¬Έμ μΆλ ₯ κ²°κ³Όλ 0.000000 μ΄ λμ€κ² λ¨.
- μ΄κ²μ μ΄μ μμμ μ μ»μ μνλ‘ λλμ μ νκ³ μΆμλμλ?

- μ΄μ κ°μ΄ a λ₯Ό λͺ μμ μΌλ‘ νλ³νμ double λ‘ ν΄μ£Όκ² λλ©΄ μ€μκ°μ μ°μ°μΌλ‘ λ³΄κ³ μμμ μ λ²λ¦¬μ§ μλλ€.
- λν, bλ μ μμ§λ§ cμμ λ€λ₯Έ μλ£νκ°μ μ°μ°μ λ ν° λ°μ΄νΈ λ¨μλ₯Ό κ°μ§λ μλ£νμΌλ‘ μλμΌλ‘ νμ λ³νμ ν΄μ£Όκ² λλ€.
- μ¦, b μ int 4byte λ double 8byte μ double μλ£νμΌλ‘ μλμΌλ‘ νλ³νμ΄ λκ² λλ©΄μ μ°μ°μ΄ μνμ΄ λλ€.
- μ΄μ κ°μ΄ μλμΌλ‘ νλ³νμ΄ λλ κ²μ 묡μμ νλ³ν μ΄λΌκ³ νλ€.

- 묡μμ νλ³νμ ν΅μ¬μ λ€λ₯Έ μλ£ν κ°μ μ°μ°μμ νν λ²μκ° λ ν° μλ£νμΌλ‘ μλμΌλ‘ λ³νλ€λ κ²μ΄ ν΅μ¬μ.
- λν, intνλ³΄λ€ μμ μλ£νμ ν¨μ¨μ μΈ μ²λ¦¬λ₯Ό μν΄ int λλ unsigned intνμΌλ‘ λ³νμ΄ λ¨.
[ 묡μμ νλ³ν μμ ]

- κ³±μ μ°μ°μ΄ λ¨Όμ μΌμ΄λ int μ μν κ°λ³΄λ€ λ ν° λ²μλ‘ ννμ΄ κ°λ₯ν float νμΌλ‘ λ³νμ΄ λκ² λ¨.
- μ΄ν, double κ³Όμ μ°μ°μ ν΅ν΄ doubleλ‘ λ³νμ΄ λ¨.
- μ΅μ’ μ μΌλ‘ int μλ£νμ κ°μ§λ κ²°κ³Όμ λμ μ ν΄μ€λμλ κ°μ λ°λ κ³³μ λ§μΆ°μ double νμ΄ int λ‘ λ³ν΄μ μ μ₯μ΄ λκ² λ¨.
- μ΄λ λ― μ°μ°μμ μ°μ μμμ λ°λΌ μλ£νμ λ³νμ΄ λ¬λΌμ§ μ μμ.
(4) μ°μ°μμ μ°μ μμμ κ²°ν©λ°©ν₯
