초급 문법 : 2. 데이터 타입 – 정수, 부동소수점, 불리언, 문자, 튜플, 배열 등 기본 타입
Rust의 기본 데이터 타입을 설명해 드리겠습니다. 각 데이터 타입을 설명한 후, 간단한 예제 코드와 함께 직접 실행하는 방법도 알려드리겠습니다.
1. 데이터 타입(Data Type)이란?
Rust에서는 변수를 선언할 때 특정한 "데이터 타입"을 사용합니다. 데이터 타입이란 값이 어떤 종류의 데이터인지를 나타내는 것입니다. 예를 들면 다음과 같습니다.
- 숫자인지? (정수, 부동소수점)
- 참/거짓인지? (불리언)
- 문자인지? (문자)
- 여러 개의 값을 저장할 수 있는지? (튜플, 배열)
Rust에서는 변수의 타입을 명시적으로 지정할 수도 있고, 자동으로 추론하도록 할 수도 있습니다.
2. 정수형 (Integer)
정수형은 소수점이 없는 숫자를 저장하는 데이터 타입입니다.
2.1 정수형 종류
Rust에서는 정수형을 여러 크기로 제공하며, 부호가 있는 정수와 부호가 없는 정수로 나뉩니다.
타입 | 크기 | 값의 범위 (부호 있음 i/없음 u) |
i8 | 8비트 | -128 ~ 127 |
u8 | 8비트 | 0 ~ 255 |
i16 | 16비트 | -32,768 ~ 32,767 |
u16 | 16비트 | 0 ~ 65,535 |
i32 | 32비트 | -2,147,483,648 ~ 2,147,483,647 |
u32 | 32비트 | 0 ~ 4,294,967,295 |
i64 | 64비트 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
u64 | 64비트 | 0 ~ 18,446,744,073,709,551,615 |
- i : 부호 있는 정수 (음수와 양수 포함)
- u : 부호 없는 정수 (음수가 없음, 양수만 사용 가능)
2.2 정수형 예제
Rust에서 정수를 사용하려면 다음과 같이 let을 사용하여 변수를 선언합니다.
// 정수형 예제
println!("\n정수형 예제");
let x: i32 = 10; // 32비트 정수
let y: u8 = 255; // 8비트 부호 없는 정수
println!("x: {}, y: {}", x, y);
🛠 실행 방법
1. VS Code를 실행하세요.
2. 앞의 글 1. 변수와 상수 (let, const) – 변수와 상수를 선언하는 방법에서 만들었던 main.rs 파일을 여세요.
3. 위의 코드를 입력한 후 저장 하세요. (앞으로의 모든 예제는 이와 같이 소스 코드의 맨 마지막에 추가하며 테스트 할 것입니다.)
예시 :
fn main() {
let mut x = 5;
println!("변수 x의 값: {}", x);
x = 10;
println!("변경된 변수 x의 값: {}", x);
const MAX_POINTS: u32 = 100;
println!("상수 MAX_POINTS: {}", MAX_POINTS);
// 정수형 예제
println!("\n정수형 예제");
let x: i32 = 10; // 32비트 정수
let y: u8 = 225; // 8비트 부호 없는 정수
println!("x: {}, y: {}", x, y);
}
4. 실행하고 결과를 확인하세요. (저장과 실행은 앞의 글을 참고하세요.)
결과:
정수형 예제
x: 10, y: 255
3. 부동소수점 (Floating Point)
부동소수점은 소수점을 포함하는 숫자를 저장할 때 사용합니다. Rust에서는 두 가지 부동소수점 타입을 제공합니다.
타입 | 크기 | 설명 |
f32 | 32비트 | 단정밀도 부동소수점 (속도 빠름, 정밀도 낮음) |
f64 | 64비트 | 배정밀도 부동소수점 (속도 약간 느림, 정밀도 높음) |
Rust에서 기본적으로 f64를 사용합니다.
3.1 부동소수점 예제
// 부동소수점 예제
println!("\n부동소수점 예제");
let a: f32 = 3.14;
let b: f64 = 2.71828;
println!("a: {}, b: {}", a, b);
🛠 실행 방법
위와 동일한 방법으로 main.rs 파일에 추가하여 실행하시면 됩니다.
결과 :
부동소수점 예제
a: 3.14, b: 2.71828
4. 불리언 (Boolean)
불리언은 참(true) 또는 거짓(false) 값을 가집니다.
4.1 불리언 예제
// 불리언 예제
println!("\n불리언 예제");
let is_rust_fun: bool = true;
let is_too_hard: bool = false;
println!("Rust is fun: {}, Too hard?: {}", is_rust_fun, is_too_hard);
5. 문자 (Character)
Rust의 char 타입은 문자 하나를 저장할 때 사용합니다. 작은 따옴표(')로 문자를 감쌉니다.
5.1 문자 예제
// 문자 예제
println!("\n문자 예제");
let letter: char = 'R';
let emoji: char = '😊';
println!("Letter: {}, Emoji: {}", letter, emoji);
6. 튜플 (Tuple)
튜플은 여러 개의 다른 타입의 값을 하나의 변수에 저장할 수 있습니다.
6.1 튜플 예제
// 튜플 예제
println!("\n튜플 예제");
let person: (i32, f64, char) = (30, 1.75, 'M');
println!("Age: {}, Height: {}, Gender: {}", person.0, person.1, person.2);
- person.0: 첫 번째 값 (30)
- person.1: 두 번째 값 (1.75)
- person.2: 세 번째 값 ('M')
7. 배열 (Array)
배열은 같은 타입의 여러 개의 값을 저장할 때 사용합니다.
7.1 배열 예제
// 배열 예제
println!("\n배열 예제");
let numbers: [i32; 3] = [10, 20, 30];
println!("First: {}, Second: {}, Third: {}", numbers[0], numbers[1], numbers[2]);
- numbers[0]: 첫 번째 값 (10)
- numbers[1]: 두 번째 값 (20)
- numbers[2]: 세 번째 값 (30)
8. 정리
데이터 | 타입 | 설명 예제 |
정수 (i32, u8 등) | 정수를 저장 | let x: i32 = 100; |
부동소수점 (f32, f64) | 소수점을 포함하는 숫자 | let y: f64 = 3.14; |
불리언 (bool) | 참 또는 거짓 | let is_true: bool = true; |
문자 (char) | 한 글자 (이모지 포함) | let letter: char = 'A'; |
튜플 ((T, U, V)) | 서로 다른 타입의 값들을 저장 | let person: (i32, f64, char) = (25, 1.75, 'M'); |
배열 ([T; N]) | 같은 타입의 여러 값을 저장 | let nums: [i32; 3] = [1, 2, 3]; |
러스트의 데이터 타입에 대해 알아보았습니다.
[ Rust ] 러스트 프로그램 언어 관련 글 목록입니다.
러스트 프로그램 언어 관련한 글 목록입니다. 러스트(Rust)는 어떤 프로그램 언어인가?윈도우에 러스트(Rust)를 설치해 보았습니다.'Hello, Rust!' 출력 프로그램을 작성해 보았습니다.카고(Cargo)에 대
hb-love-each-other.tistory.com
한국 러스트 사용자 그룹
rust-kr.org
Rust Programming Language
A language empowering everyone to build reliable and efficient software.
www.rust-lang.org
'컴퓨터에서는' 카테고리의 다른 글
[ Python ] REST API vs. WebSocket API (8) | 2025.03.13 |
---|---|
[ Rust ] 초급 문법 : 3. 함수 (fn) – 함수 선언 및 매개변수, 반환값 사용법 (0) | 2025.03.11 |
[ Rust ] 초급 문법 : 1. 변수와 상수 (let, const) – 변수와 상수를 선언하는 방법 (2) | 2025.03.06 |
[ Rust ] 러스트의 문법에는 어떠한 것들이 있을까요? (4) | 2025.03.06 |
[ JavaScript ] 자바스크립트로 마인드맵을 구현할 수 있을까요? (4) | 2025.03.05 |
댓글