IT/Rust 기초 완전 정복

Rust 연산자와 제어문 활용법 (4)

지식 발전소 2024. 4. 22. 10:22
728x90
반응형

1

연산자(Operators)

연산자는 프로그래밍에서 값을 조작하거나 계산하는 데 사용됩니다. Rust에는 다양한 종류의 연산자가 있는데요. 가장 기본적인 연산자부터 살펴보겠습니다.

산술 연산자(Arithmetic Operators)

  1. 더하기(+): 두 값을 더합니다. let x = 5 + 3; // x = 8
  2. 빼기(-): 두 값의 차를 구합니다. let x = 10 - 3; // x = 7
  3. 곱하기(*): 두 값을 곱합니다. let x = 4 * 5; // x = 20
  4. 나누기(/): 두 값을 나눕니다. 정수 나누기의 경우 소수점 이하는 버립니다. let x = 10 / 3; // x = 3
  5. 나머지(%): 두 값을 나눈 나머지를 구합니다. let x = 10 % 3; // x = 1

비트 연산자(Bitwise Operators)

비트 연산자는 이진 형식의 값을 직접 조작할 수 있게 해줍니다.

  1. AND(&): 두 값의 비트를 AND 연산합니다. let x = 0b1010 & 0b1100; // x = 0b1000 (8)
  2. OR(|): 두 값의 비트를 OR 연산합니다. let x = 0b1010 | 0b1100; // x = 0b1110 (14)
  3. XOR(^): 두 값의 비트를 XOR 연산합니다. let x = 0b1010 ^ 0b1100; // x = 0b0110 (6)
  4. NOT(!): 값의 비트를 반전시킵니다. let x = !0b1010; // x = 0b0101 (5)
  5. 좌측 시프트(<<): 값의 비트를 왼쪽으로 시프트합니다. let x = 0b1010 << 2; // x = 0b101000 (40)
  6. 우측 시프트(>>): 값의 비트를 오른쪽으로 시프트합니다. let x = 0b1010 >> 1; // x = 0b0101 (5)

복합 대입 연산자(Compound Assignment Operators)

복합 대입 연산자는 할당과 연산을 한 번에 수행할 수 있게 해줍니다.

  1. 더하기 대입(+=): let mut x = 5; x += 3; // x = 8
  2. 빼기 대입(-=): let mut x = 10; x -= 3; // x = 7
  3. 곱하기 대입(*=): let mut x = 4; x *= 5; // x = 20
  4. 나누기 대입(/=): let mut x = 10; x /= 3; // x = 3
  5. 나머지 대입(%=): let mut x = 10; x %= 3; // x = 1

비교 연산자(Comparison Operators)

비교 연산자는 두 값을 비교하여 bool 값을 반환합니다.

  1. 같음(==): 두 값이 같은지 확인합니다. let x = 5 == 3; // x = false
  2. 다름(!=): 두 값이 다른지 확인합니다. let x = 5 != 3; // x = true
  3. 작음(<): 왼쪽 값이 오른쪽 값보다 작은지 확인합니다. let x = 3 < 5; // x = true
  4. 크거나 같음(>=): 왼쪽 값이 오른쪽 값보다 크거나 같은지 확인합니다. let x = 5 >= 5; // x = true
  5. 작거나 같음(<=): 왼쪽 값이 오른쪽 값보다 작거나 같은지 확인합니다. let x = 3 <= 5; // x = true

논리 연산자(Logical Operators)

논리 연산자는 bool 값을 조합하여 새로운 bool 값을 생성합니다.

  1. AND(&&): 두 값이 모두 true일 때만 true를 반환합니다. let x = true && false; // x = false
  2. OR(||): 두 값 중 하나라도 true이면 true를 반환합니다. let x = true || false; // x = true
  3. NOT(!): 값의 논리를 반전시킵니다. let x = !true; // x = false

위 연산자들을 적절히 활용하면 다양한 계산과 조건 처리를 할 수 있습니다. 연산자의 우선순위도 중요한데, 곱셈과 나눗셈이 더하기와 빼기보다 먼저 계산되고, 괄호() 안의 식이 가장 먼저 계산됩니다.

만약 값이 정수형이라면 오버플로우(overflow) 발생 시 고정된 값으로 대체됩니다. (예: u8::MAX + 1 = 0) 값이 부동 소수점 형식이라면 오버플로우 발생 시 무한대 값으로 대체됩니다.

지금까지 Rust의 다양한 연산자에 대해 살펴봤습니다. 이제 제어문에 대해 알아보겠습니다.

제어문(Control Flow)

제어문은 프로그램의 실행 흐름을 제어하는 데 사용됩니다. Rust에는 다양한 제어문이 있습니다.

if 문

if 문은 조건에 따라 다른 코드 블록을 실행하게 해줍니다.

let x = 5;

if x == 5 {
    println!("x는 5입니다!");
} else {
    println!("x는 5가 아닙니다!");
}

if 문은 조건식이 true이면 if 블록의 코드를, 아니면 else 블록의 코드를 실행합니다. else if를 이용하면 여러 조건을 연결할 수 있습니다.

loop 문

loop 문은 무한 루프를 만듭니다. 루프를 종료하려면 break 키워드를 사용해야 합니다.

let mut count = 0;
loop {
    if count >= 5 {
        break;
    }
    println!("count: {}", count);
    count += 1;
}

위 코드는 0부터 4까지 출력한 뒤 루프를 종료합니다.

loop 문은 continue 키워드와 함께 사용할 수 있습니다. continue는 현재 반복을 종료하고 다음 반복으로 넘어갑니다.

while 문

while 문은 조건식이 true인 동안 계속 반복합니다.

let mut x = 0;
while x < 5 {
    println!("x: {}", x);
    x += 1;
}

위 코드는 0부터 4까지 출력합니다.

for 문

for 문은 반복 가능한 객체(이터레이터)를 순회할 때 사용합니다.

let numbers = [1, 2, 3, 4, 5];
for n in numbers.iter() {
    println!("{}", n);
}

위 코드는 배열의 각 요소를 출력합니다.

for x in 0..5 {
    println!("{}", x);
}

위 코드는 0부터 4까지 출력합니다. 0..5는 0부터 5 미만까지의 범위를 나타내는 범위 표기법입니다.

match 문

match 문은 값에 따라 다른 코드 블록을 실행하게 해줍니다. 여러 가지 패턴을 매치할 수 있어서 if-else 체인보다 더 강력합니다.

let x = 5;

match x {
    1 => println!("one"),
    2 => println!("two"),
    3 => println!("three"),
    _ => println!("{}", x),
}

위 코드는 "5"를 출력합니다. _는 앞선 패턴들에 매치되지 않는 값들을 처리하는 와일드카드 패턴입니다.

match 문에서는 여러 패턴을 한 번에 매치할 수도 있습니다.

let x = 5;

match x {
    1 | 2 | 3 => println!("one, two or three"),
    _ => println!("{}", x),
}

여기서 |는 OR 연산자입니다.

제어문을 적절히 활용하면 프로그램의 실행 흐름을 세밀하게 제어할 수 있습니다. 프로그래밍할 때 상황에 맞는 제어문을 잘 선택하는 것이 중요합니다.

지금까지 Rust의 연산자와 제어문에 대해 살펴봤습니다. 다음으로는 함수에 대해 알아보겠습니다.

참고 자료

[1] The Rust Programming Language Book - Operators and Control Flow: https://doc.rust-lang.org/book/ch03-02-data-types.html, https://doc.rust-lang.org/book/ch03-05-control-flow.html [2] Rust by Example - Operators and Control Flow: https://doc.rust-lang.org/rust-by-example/flow_control.html, https://doc.rust-lang.org/rust-by-example/primitive_types/operators.html [3] The Rust Reference - Operators and Control Flow: https://doc.rust-lang.org/reference/expressions.html, https://doc.rust-lang.org/reference/tokens.html#operators-and-symbo

 

 

한 고대 문서 이야기

여기 한 고대 문서가 있습니다. 이 문서는 B.C. 1,500년 부터 A.D 100년까지 약 1,600 여 년 동안 기록되었습니다. 이 문서의 저자는 약 40 명입니다. 이 문서의 고대 사본은 25,000 개가 넘으나, 사본간 오

gospel79.tistory.com

 

유튜브 프리미엄 월 1만원 할인받고 월 4000원에 이용하는 방법

올해 5월부터 월 8000원 정도이던 유튜브 프리미엄 요금이 15000원 정도로 인상됩니다. 각종 OTT 서비스, ChatGPT 같은 서비스들이 늘어나다보니 이런 거 몇 개만 이용하더라도 월 이용요금이 5만원을

stock79.tistory.com

 

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

728x90
반응형