본문 바로가기
개발/Rust

[Rust] if 문

by 77monkey 개발자 2023. 9. 4.
반응형

Rust에서 if문은 다른 언어와 비슷합니다. 하지만 다른 점도 있습니다. 오늘은 Rust if문에 대해서 알아보도록 하겠습니다. 

 

if 문

if문은 조건을  true 또는 false로 판단하여 그에 따라 실행되는 코드가 달라집니다. 

if 조건문1 {
	동작1
} else if 조건문2 {
	동작2
} else {
	동작3
}

조건문1이 참이면 동작1이 실행이 되고, 조건문1이 거짓이면 조건문2가 실행되게 됩니다. 조건문2가 참이면 동작2이 실행이 되고, 조건문2가 거짓이면 동작3이 실행됩니다. 상황에 따라서 if문 하나만 필요할 수 있고, else if문으로 계속 조건을 줄 수 있습니다. 모든 조건이 만족하지 않았을 때는 else문을 타게 됩니다.

 

조건문은 무조건 bool 타입

C언어나 C++에서는 조건문이 0이 아니면 참으로 판단이 되었습니다. 하지만 Rust에서는 무조건 bool로 판단이 되어야 합니다. 그래서 예전 같았으면 아래와 같은 코드가 가능하지만, Rust에서는 불가능합니다. 

// C/C++
if (1) {
	//동작
}

// Rust
if 1 != 0 {
	//동작
}

 

삼항 연산자 없음

C/C++에서 있었던 삼항 연산자가 없습니다. 그렇기 때문에 if, else로 처리를 사용해서 처리를 해야 합니다. 

 

조건문에 괄호() 미사용

코드를 잠깐 보았지만 조건문에 괄호가 없습니다. 여러 조건을 적을 때에는 연산자 우선순위 때문에 괄호()를 사용하지만 그렇지 않은 경우에는 괄호를 생략합니다. 괄호를 사용하게 되면 다음과 같은 warning이 발생합니다.

fn main() {
    let condition: u32 = 0;
    if (condition == 0) {	// warning 발생 코드
        println!("condition = 0");
    }
}

Rust 컴파일러는 친절하게 어떤 부분이 수정이 필요한지 알려줄 뿐만 아니라, 어떻게 수정하는지도 알려줍니다. 그렇기 때문에 조건문에서 괄호를 제거해 주면 warning이 사라집니다.

warning: unnecessary parentheses around `if` condition
 --> src\main.rs:4:8
  |
4 |     if (condition == 0) {
  |        ^              ^
  |
  = note: `#[warn(unused_parens)]` on by default
help: remove these parentheses
  |
4 -     if (condition == 0) {
4 +     if condition == 0 {
  |

 

if 문 예시

위에서 설명하면서 예시를 들었지만 좀 더 다양한 예시를 들어보도록 하겠습니다. 

점수가 3인 score 변수가 있습니다. 처음 if문에 들어오면 score가 5인지 확인합니다. 5가 아니기 때문에 거짓으로 다음 else if문으로 가게 됩니다. 하지만 이번에도 score는 4가 아니기 때문에 다음 else if문으로 가게 됩니다. 이번에는 socre가 3이 맞기 때문에 참이 되어서 3을 찍게 됩니다.

fn main() {
    let score: u32 = 3;

    if score == 5 {
        println!("5");
    } else if score == 4 {
        println!("4");
    } else if score == 3 {
        println!("3");
    } else if score == 2 {
        println!("2");
    } else if score == 1 {
        println!("1");
    } else {
        println!("0");
    }
}

또 다른 코드를 보면 숫자를 하나 받아서 짝수인지 확인하여 짝수이면 짝수를 출력합니다. 

fn main() {
    let num = 5;

    if num % 2 == 0 {
        println!("짝수");
    }
}

출력 결과는 아무것도 안 나옵니다. num이 5라서 홀수이기 때문입니다. 

 

if 문 이용 변수 선언

if 문을 이용해서 변수를 선언할 수 있습니다. 

let 변수 = if 조건문 { 참 } else { 거짓 };

선언할 때 주의할 점은 참/거짓일 때 중괄호 안에서 세미콜론(;)을 찍지 않고 젤 마지막에 세미콜론(;)을 찍는다는 것입니다. 

예시 코드를 보면 다음과 같습니다. num을 5라고 선언을 했습니다. 그리고 odd_even이라는 변수를 만들었습니다. 그런데 이 odd_even 변수는 if 문을 통해서 짝수이면 even을 홀수이면 odd를 odd_even 값으로 반환을 합니다.

fn main() {
    let num = 5;
    let odd_even = if num % 2 == 0 { "even" } else { "odd" };

    println!("{} is {}", num, odd_even);
}

출력 결과는 다음과 같습니다.

5 is odd

 

마무리

Rust에서 if 문에 대해서 알아보았습니다. 다른 언어와 비슷한 부분도 있지만 다른 부분도 있음을 확인했습니다. if 문 사용하는 방법에 대해서 잘 파악하여 코드에 활용하시길 바랍니다. 

반응형

'개발 > Rust' 카테고리의 다른 글

[Rust] 튜플(tuple)  (0) 2023.09.28
[Rust] bool 타입  (0) 2023.09.27
[Rust] 변수 선언  (0) 2023.09.03
[Rust] 데이터 기본 타입  (0) 2023.09.02
[Rust] hello world 출력하기  (0) 2023.09.01