Rust 연산자와 제어문 활용법 (4)
1
연산자(Operators)
연산자는 프로그래밍에서 값을 조작하거나 계산하는 데 사용됩니다. Rust에는 다양한 종류의 연산자가 있는데요. 가장 기본적인 연산자부터 살펴보겠습니다.
산술 연산자(Arithmetic Operators)
- 더하기(+): 두 값을 더합니다. let x = 5 + 3; // x = 8
- 빼기(-): 두 값의 차를 구합니다. let x = 10 - 3; // x = 7
- 곱하기(*): 두 값을 곱합니다. let x = 4 * 5; // x = 20
- 나누기(/): 두 값을 나눕니다. 정수 나누기의 경우 소수점 이하는 버립니다. let x = 10 / 3; // x = 3
- 나머지(%): 두 값을 나눈 나머지를 구합니다. let x = 10 % 3; // x = 1
비트 연산자(Bitwise Operators)
비트 연산자는 이진 형식의 값을 직접 조작할 수 있게 해줍니다.
- AND(&): 두 값의 비트를 AND 연산합니다. let x = 0b1010 & 0b1100; // x = 0b1000 (8)
- OR(|): 두 값의 비트를 OR 연산합니다. let x = 0b1010 | 0b1100; // x = 0b1110 (14)
- XOR(^): 두 값의 비트를 XOR 연산합니다. let x = 0b1010 ^ 0b1100; // x = 0b0110 (6)
- NOT(!): 값의 비트를 반전시킵니다. let x = !0b1010; // x = 0b0101 (5)
- 좌측 시프트(<<): 값의 비트를 왼쪽으로 시프트합니다. let x = 0b1010 << 2; // x = 0b101000 (40)
- 우측 시프트(>>): 값의 비트를 오른쪽으로 시프트합니다. let x = 0b1010 >> 1; // x = 0b0101 (5)
복합 대입 연산자(Compound Assignment Operators)
복합 대입 연산자는 할당과 연산을 한 번에 수행할 수 있게 해줍니다.
- 더하기 대입(+=): let mut x = 5; x += 3; // x = 8
- 빼기 대입(-=): let mut x = 10; x -= 3; // x = 7
- 곱하기 대입(*=): let mut x = 4; x *= 5; // x = 20
- 나누기 대입(/=): let mut x = 10; x /= 3; // x = 3
- 나머지 대입(%=): let mut x = 10; x %= 3; // x = 1
비교 연산자(Comparison Operators)
비교 연산자는 두 값을 비교하여 bool 값을 반환합니다.
- 같음(==): 두 값이 같은지 확인합니다. let x = 5 == 3; // x = false
- 다름(!=): 두 값이 다른지 확인합니다. let x = 5 != 3; // x = true
- 작음(<): 왼쪽 값이 오른쪽 값보다 작은지 확인합니다. let x = 3 < 5; // x = true
- 크거나 같음(>=): 왼쪽 값이 오른쪽 값보다 크거나 같은지 확인합니다. let x = 5 >= 5; // x = true
- 작거나 같음(<=): 왼쪽 값이 오른쪽 값보다 작거나 같은지 확인합니다. let x = 3 <= 5; // x = true
논리 연산자(Logical Operators)
논리 연산자는 bool 값을 조합하여 새로운 bool 값을 생성합니다.
- AND(&&): 두 값이 모두 true일 때만 true를 반환합니다. let x = true && false; // x = false
- OR(||): 두 값 중 하나라도 true이면 true를 반환합니다. let x = true || false; // x = true
- 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
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."