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