if-init์˜ ๋ชจ๋“  ๊ฒƒ(if๋ฌธ ๋‚ด์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”)

2024. 8. 26. 08:25ยทํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์‘์šฉ

 

 

 

if-init ๋ฌธ๋ฒ•

C++17์—์„œ ๋„์ž…๋œ if-init ๋ฌธ๋ฒ•์€ if ์กฐ๊ฑด๋ฌธ์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ณ , ๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„(์œ ํšจ ๋ฒ”์œ„)๋ฅผ if ๋ฌธ ๋‚ด๋ถ€๋กœ ์ œํ•œํ•˜์—ฌ ๋” ์•ˆ์ „ํ•˜๊ณ  ๋ช…ํ™•ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1. ๊ธฐ๋ณธ ๊ฐœ๋…

๊ธฐ์กด์˜ if ์กฐ๊ฑด๋ฌธ์—์„œ๋Š” ์กฐ๊ฑด๋ฌธ ์™ธ๋ถ€์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ ํ›„, ์ด ๋ณ€์ˆ˜๋ฅผ if ์กฐ๊ฑด์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ C++17๋ถ€ํ„ฐ๋Š” if ๋ฌธ ์•ˆ์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๋ฅผ ํ•จ๊ป˜ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ์กด ๋ฐฉ์‹ (C++17 ์ด์ „):
    int x = getValue();
    if (x > 0) {
        std::cout << "x is positive: " << x << std::endl;
    }
  • if-init ์‚ฌ์šฉ ๋ฐฉ์‹ (C++17):
    if (int x = getValue(); x > 0) {
        std::cout << "x is positive: " << x << std::endl;
    }


2. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

if-init์˜ ์ผ๋ฐ˜์ ์ธ ํ˜•ํƒœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

if (init-statement; condition) {
    // if block
} else {
    // else block
}
  • init-statement: if ๋ฌธ ๋‚ด์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ตฌ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • condition: ์ดˆ๊ธฐํ™”๋œ ๋ณ€์ˆ˜๋‚˜ ๋‹ค๋ฅธ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‰๊ฐ€๋˜๋Š” ์กฐ๊ฑด์‹์ž…๋‹ˆ๋‹ค.

3. ์˜ˆ์ œ ์ฝ”๋“œ

๋‹ค์–‘ํ•œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด if-init ๋ฌธ๋ฒ•์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ 1: ๊ธฐ๋ณธ ์‚ฌ์šฉ ์˜ˆ

#include <iostream>

int getValue() {
    return 10;
}

int main() {
    if (int x = getValue(); x > 5) {
        std::cout << "x is greater than 5: " << x << std::endl;
    } else {
        std::cout << "x is 5 or less." << std::endl;
    }

    return 0;
}

์ถœ๋ ฅ:

x is greater than 5: 10

์„ค๋ช…:

  • getValue() ํ•จ์ˆ˜์—์„œ ๋ฐ˜ํ™˜๋œ ๊ฐ’์„ x์— ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ๊ทธ ๊ฐ’์„ ๊ธฐ๋ฐ˜์œผ๋กœ ์กฐ๊ฑด์„ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  • x๋Š” if ๋ฌธ ๋‚ด๋ถ€์—์„œ๋งŒ ์œ ํšจํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ 2: else if์™€ ํ•จ๊ป˜ ์‚ฌ์šฉ

#include <iostream>

int getValue() {
    return 3;
}

int main() {
    if (int x = getValue(); x > 5) {
        std::cout << "x is greater than 5: " << x << std::endl;
    } else if (x == 3) {
        std::cout << "x is exactly 3: " << x << std::endl;
    } else {
        std::cout << "x is less than or equal to 5 but not 3: " << x << std::endl;
    }

    return 0;
}

์ถœ๋ ฅ:

x is exactly 3: 3

์„ค๋ช…:

  • x๊ฐ€ else if์™€ else ๋ธ”๋ก์—์„œ๋„ ๋™์ผํ•˜๊ฒŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” if-init์œผ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊ฐ€ ํ•ด๋‹น ๋ธ”๋ก์—์„œ ๊ณ„์†ํ•ด์„œ ์œ ํšจํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์˜ˆ์ œ 3: ๋ณตํ•ฉ ์กฐ๊ฑด ์‚ฌ์šฉ

#include <iostream>

int main() {
    if (int x = 10, y = 20; x < y) {
        std::cout << "x is less than y: " << x << " < " << y << std::endl;
    } else {
        std::cout << "x is not less than y." << std::endl;
    }

    return 0;
}

์ถœ๋ ฅ:

x is less than y: 10 < 20

์„ค๋ช…:

  • x์™€ y๋ฅผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ด๋ฅผ ์กฐ๊ฑด์‹์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณตํ•ฉ ์กฐ๊ฑด์‹์„ ํ†ตํ•ด ๋‹ค์ˆ˜์˜ ๋ณ€์ˆ˜๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ด๋ฅผ ์กฐ๊ฑด๋ฌธ์—์„œ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4. ์žฅ์  ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

์žฅ์ :

  • ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ: ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”๊ฐ€ if ๋ฌธ๊ณผ ํ•จ๊ป˜ ์ด๋ฃจ์–ด์ง€๋ฏ€๋กœ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง‘๋‹ˆ๋‹ค.
  • ์Šค์ฝ”ํ”„ ์ œํ•œ: ๋ณ€์ˆ˜๊ฐ€ if ๋ฌธ ๋‚ด์—์„œ๋งŒ ์œ ํšจํ•˜๊ฒŒ ๋˜์–ด, ์˜๋„์น˜ ์•Š์€ ์™ธ๋ถ€ ์ ‘๊ทผ์ด๋‚˜ ์‚ฌ์šฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ ๊ฐ„๊ฒฐํ™”: ์ดˆ๊ธฐํ™”์™€ ์กฐ๊ฑด ๊ฒ€์‚ฌ๋ฅผ ํ•œ ์ค„๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ:

  • ์Šค์ฝ”ํ”„ ์ฃผ์˜: if ๋ฌธ ๋‚ด์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” if-else ๋ธ”๋ก ์™ธ๋ถ€์—์„œ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ ์„ ์—ผ๋‘์— ๋‘๊ณ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณต์žกํ•œ ์ดˆ๊ธฐํ™”: ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์ดˆ๊ธฐํ™”๋‚˜ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๋ฅผ ๋™์‹œ์— ์„ ์–ธํ•  ๊ฒฝ์šฐ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์ˆ˜์ค€์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

if-init ๋ฌธ๋ฒ•์€ C++17 ์ดํ›„์— ์ฝ”๋“œ๋ฅผ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์œ ์šฉํ•œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ํ™œ์šฉํ•˜๋ฉด, ์กฐ๊ฑด๋ถ€ ๋กœ์ง์—์„œ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด > C++ ์‘์šฉ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ชจ๋“  ๊ฒƒ(Template Meta Programming)  (1) 2024.08.28
Structured Bindings์˜ ๋ชจ๋“  ๊ฒƒ  (1) 2024.08.27
[C++] std::optional์˜ ๋ชจ๋“  ๊ฒƒ  (0) 2024.08.22
[c++] constexpr์˜ ๋ชจ๋“  ๊ฒƒ  (2) 2024.08.21
ํด๋ž˜์Šค์˜ ํฌ๊ธฐ์™€ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ  (1) 2023.09.14
'ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด/C++ ์‘์šฉ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ…œํ”Œ๋ฆฟ ๋ฉ”ํƒ€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ๋ชจ๋“  ๊ฒƒ(Template Meta Programming)
  • Structured Bindings์˜ ๋ชจ๋“  ๊ฒƒ
  • [C++] std::optional์˜ ๋ชจ๋“  ๊ฒƒ
  • [c++] constexpr์˜ ๋ชจ๋“  ๊ฒƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
์„œ์•„๋ž‘๐Ÿ˜ƒ
Just Do It๐Ÿ’ช
  • ์„œ์•„๋ž‘๐Ÿ˜ƒ
    G-Stack
    ์„œ์•„๋ž‘๐Ÿ˜ƒ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ์ „์ฒด๋ณด๊ธฐ (144)
      • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (78)
        • C++ ๊ธฐ์ดˆ (28)
        • C++ ์‘์šฉ (18)
        • Python (18)
        • JavaScript & NodeJS (0)
        • Go (12)
        • React & NextJS (2)
        • Java (0)
      • AI (2)
      • ์ปดํ“จํ„ฐ ๊ตฌ์กฐ & ์šด์˜์ฒด์ œ (31)
      • ์•Œ๊ณ ๋ฆฌ์ฆ˜ (12)
      • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (5)
      • ๋„คํŠธ์›Œํฌ (3)
      • ๋””์ž์ธํŒจํ„ด (5)
      • ์„œ๋น„์Šค & ํˆด (7)
      • ํŠธ๋ Œ๋“œ&์ด์Šˆ (1)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • ํƒœ๊ทธ
    • ๋ฐฉ๋ช…๋ก
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

    • G์Šคํƒ์˜ ๊ธฐ์ˆ  ๋ธ”๋กœ๊ทธ
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    go
    init
    ๋ฐฐ์—ด
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    component
    ๋ณ€์ˆ˜
    ์ƒ์†
    ๋””์ž์ธํŒจํ„ด
    Thread
    ํ•˜๋“œ๋””์Šคํฌ
    c++
    ์žฌ๊ท€
    fork
    ์Šคํƒ
    ํŒŒ์ด์ฌ
    ๋ฐ˜๋ณต๋ฌธ
    c
    ๊ฐ€์ƒ๋ฉ”๋ชจ๋ฆฌ
    ํŒจํ‚ค์ง€
    ๋ฉ”๋ชจ๋ฆฌ
    ํฌ์ธํ„ฐ
    pointer
    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค
    ์กฐ๊ฑด๋ฌธ
    RAM
    cpu
    STD
    ํ•จ์ˆ˜
    ํŒŒ์ผ์ž…์ถœ๋ ฅ
    ์ปดํ“จํ„ฐ
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.6
์„œ์•„๋ž‘๐Ÿ˜ƒ
if-init์˜ ๋ชจ๋“  ๊ฒƒ(if๋ฌธ ๋‚ด์—์„œ ๋ณ€์ˆ˜ ์„ ์–ธ, ์ดˆ๊ธฐํ™”)
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”