C++ ํƒ€์ž… ๋ณ€ํ™˜

int main() {
  // -------๋น„ํŠธ์—ด ์žฌ๊ตฌ์„ฑ ์—ฌ๋ถ€์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ --------
  {
    // 1. ๊ฐ’ ํƒ€์ž… ๋ณ€ํ™˜(implicit conversion)
    // ํŠน์ง•) ์˜๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ, ์›๋ณธ ๊ฐ์ฒด์™€ ๋‹ค๋ฅธ ๋น„ํŠธ์—ด ์žฌ๊ตฌ์„ฑ
    // ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊นŒ๋ณด๋ฉด, ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๋‹ค๋ฅธ ๋น„ํŠธ์—ด๋กœ ์žฌ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.
    int a = 123456789;
    float b = (float)a;
  }
  
  {
    // 2. ์ฐธ์กฐ ํƒ€์ž… ๋ณ€ํ™˜
    // ํŠน์ง•) ์ฐธ์กฐ ํƒ€์ž… ๋ณ€ํ™˜์€ ์ฐธ์กฐ ํƒ€์ž…์„ ์ด์šฉํ•ด์„œ, ์›๋ณธ ๊ฐ์ฒด์˜ ๋น„ํŠธ์—ด์„ ๊ทธ๋Œ€๋กœ ์ฐธ์กฐ (๋ณด๋Š” ๊ด€์ ๋งŒ ๋ณ€ํ™”)
    // ์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊นŒ๋ณด๋ฉด, ์›๋ณธ ๋ฐ์ดํ„ฐ์™€ ๊ฐ™์€ ๋น„ํŠธ์—ด๋กœ ์žฌ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ๋ถ€๋ถ„์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ค์ œ ๊ฐ’์„ ์ถœ๋ ฅ์‹œ ์›๋ณธ ๊ฐ์ฒด์™€ ๋‹ค๋ฅธ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.
    int a = 123456789;
    float b = (float&)a;
  }
  
  // -------์•ˆ์ „๋„ ๋ถ„๋ฅ˜(๋ฐ์ดํ„ฐ ์†์‹ค) --------
  
  {
    // 3. ์•ˆ์ „ํ•œ ํƒ€์ž… ๋ณ€ํ™˜
    // ์—…์บ์ŠคํŒ… ํ•˜๋Š” ๊ฒฝ์šฐ (char -> short -> int)
    int a = 123456789;
    __int64 b = a;
  }
  
  {
    // 4. ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ํƒ€์ž… ๋ณ€ํ™˜
    // ์˜๋ฏธ๊ฐ€ ํ•ญ์ƒ 100% ๋ณด์žฅ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ
    // ํƒ€์ž…์ด ๋‹ค๋ฅด๊ฑฐ๋‚˜, ๋‹ค์šด์บ์ŠคํŒ… ํ•˜๋Š” ๊ฒฝ์šฐ
    int a = 123456789;
    float b = a;
    short c = a;
  }
  
  // -------์˜๋„์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜ --------
  
  {
    // 5. ์•”์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜
    // ํƒ€์ž… ๋ฐ˜ํ™˜ ๊ทœ์น™์— ๋”ฐ๋ผ์„œ ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜
    int a = 123456789;
    float b = a;
  }
  
  {
    // 6. ๋ช…์‹œ์  ํƒ€์ž… ๋ณ€ํ™˜
    int a = 123456789;
    float b = (float)a;
  }
  
  return 0;
}