πŸ› οΈ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) μ—°μ‚°μžμ˜ μš°μ„ μˆœμœ„μ™€ κ²°ν•©λ°©ν–₯