rust
rust - 데이터 타입
쓰러진복돌이
2024. 3. 11. 09:58
0. 데이터 크키
fn main() {
let x = 12; // by default this is i32
let y :i32 = 25; // by default this is i32
let a = 12u8; //숫자형은 숫자 끝에 유형을 명시하여 명시적으로 지정
let b = 4.3; // by default this is f64
let c = 4.3f32; //숫자형은 숫자 끝에 유형을 명시하여 명시적으로 지정
let bv = true; //bool
let t = (13, false); //tuple
let sentence = "hello world!";
println!(
"{} {} {} {} {} {} {} {} {}",
x, y, a, b, c, bv, t.0, t.1, sentence
);
}
아래 배우게 될 데이터 타입의 예시
1. 정수형 - Integer Types (signed, unsigned)
ength | Signed | Unsigned |
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32(default) | u32 |
64-bit | i64 | u64 |
128-bit | i128 | u128 |
arch | isize | usize |
mber literals | Example |
Decimal | 98_222 |
Hex | 0xff |
Octal | 0o77 |
Binary | 0b1111_0000 |
Byte (u8 only) | b'A' |
※ signed - 부호있는 정수
※ unsigned - 부호없는 정수
※ pointer sized integers - 메모리에서 색인과 항목의 크기를 나타내는 usize, isize (보통 4 or 8 bytes)
※ 98_222는 98,222와 같은 의미
※ release mode 컴파일 시 integer overflow 확인불가.
fn main() {
let x = 5 / 2; // 출력값: 2
let y = 5.0 / 2.0; // 출력값: 2.5
println!("{}, {}",x,y);
}
2.실수형 - Floating-point Types
- f32, f64(default)
fn main() {
let x:f32 = 1.0;
let x:f64 = 2.1;
println!("{}, {}",x,y);
}
fn main() {
let x = 5 / 2; // 출력값: 2
let y = 5.0 / 2.0; // 출력값: 2.5
println!("{}, {}",x,y);
}
3. 참/거짓 - Boolean Type
- bool
// let은 타입을 명시하지 않아도 된다.
fn main() {
let x = true;
let y:bool = false; // 타입명시
println!("{}, {}",x,y);
}
4. 문자형 - Character Type
- Unicode, 홑 따옴표 사용
// let은 타입을 명시하지 않아도 된다.
fn main() {
let X = 'abc';
let y = '^^';
let z = '😨';
println!("{}, {}, {}",x,y,z);
}
- 리터럴(Literal)이란 소스코드를 컴파일 할 경우 정의되어 있는 내용을 그대로 정확하게 해석할 수 있어야 하는 값이다.
문자열이나 숫자와 같은 값들이 모두 리터럴이라는 것은 인식하자.
5. 튜플 - tuple
- 튜플은 복합 데이터 형식
- 튜플은 길이가 고정
- 일단 선언되면 크기가 커지거나 줄어들 수 없음
- 튜플 인덱스는 0부터 시작
※ tuple은 복합 데이터 형식이므로 println!("{ }",tuple) 구문은 튜플의 값을 표시하는 데 사용할 수 없음
※ 튜플의 값을 인쇄하려면 println!("{:?}", tuple) 구문을 사용
fn main() {
let tuple:(i32,f64,u8) = (-325,4.9,22);
println!("integer is :{:?}",tuple.0);
println!("float is :{:?}",tuple.1);
println!("unsigned integer is :{:?}",tuple.2);
println!("all data is :{:?}",tuple);
}
// integer is :-325
// float is :4.9
// unsigned integer is :22
// all data is :(-325, 4.9, 22)
- Destructruing (구조분해)
fn main(){
let b:(i32,bool,f64) = (30,true,7.9);
print(b);
}
fn print(x:(i32,bool,f64)){
println!("Inside print method");
let (age,is_male,cgpa) = x; //assigns a tuple to distinct variables //Destructruing
println!("Age is {} , isMale? {},cgpa is
{}",age,is_male,cgpa);
}
6. Slices