스칼라(Scalar) 타입

  • 하나의 값을 표현
  • Integer, Float, Char, Boolean

Integer

  • Signed Integer
    • i8, i16, i32, i64, i128, isize
    • 음수, 양수 표현
  • Unsigned Integer
    • u8, u16, u32, u64, u128, usize
    • 양수만 표현
  • 알파벳으로 부호를 표현하고, 그 뒤 숫자로 bit 표현
    • 예를 들어, u8은 8bit 메모리 공간에서 0~7까지의 양수를 저장할 수 있음
  • isize, usize는 프로그램이 동작하는 컴퓨터 환경에 따라 결정
    • 64-bit 아키텍쳐면 64bit, 32-bit 아키텍쳐면 32bit 가짐
  • 기본값은 i32
    • 타입을 명시하지 않은 경우 i32로 지정됨
  • 정수형 간의 연산
    • 기본적으로 서로 다른 타입끼리 연산 불가
    • 두 변수 중 하나의 변수만 타입이 명시되어 있다면 나머지 변수는 안전한 쪽으로 타입이 지정됨 (컴파일러의 타입 추론)
    • 예를 들어, 두 정수형 변수를 연산할 때 변수 a는 i8로 타입을 명시하고 변수 b는 타입을 명시하지 않았다면 b의 타입은 a의 타입으로 지정됨. 단, b의 값이 i8(a의 타입)에 저장될 수 있어야 함.
let default_int = 50; println!("type of default_int = {}\n", any::type_name_of_val(&default_int)); // type of default_int = i32

let first: u8 = 10; // u8 타입 지정
let second = 20; // 타입 미지정
let result = first + second; // succes, 변수 b의 타입이 컴파일러에 의해 u8로 지정되어 연산됨 (타입 추론)

let my_int1 = 9u8; // 숫자의 경우 타입을 값 바로 왼쪽에 적어도 됨
let my_int2 = -1_i8; // 언더바(_)도 허용
let my_int3= 1_000_000_u32; // 타입뿐만 아니라 숫자 사이에도 언더바 적용 가능

Float

  • 실수형은 f36, f64 두 가지
  • 기본값은 f64
    • 타입을 지정하지 않으면 f64로 지정됨
    • 현대의 CPU에서 f64f32와 비슷한 속도를 내면서도 더 정밀함
  • 정수형과 마찬가지로 다른 타입끼리 연산 불가
let default_float = 8.0; 
println!("type of default_float = {}\n", any::type_name_of_val(&default_float)); // type of default_float = f64

Char

  • 작은따옴표('')로 표현
  • 4Bytes 저장공간 사용
  • 유니코드에 정의된 모든 값 표현 가능
let first_letter = 'A'; 
let space = ' '; 
let cat_face = '😺'; // Emojis are chars too

Type casting

  • as 키워드로 간단히 타입 캐스팅 가능
let my_char = 'A';
println!("'A' cast to Integer : {}", my_char as i8); // 65, 유니코드 문자를 정수형으로 변환

let my_int: i8 = 30;
let casted_my_int = my_int as u32;
println!("my_int's type: {}", std::any::type_name_of_val(&casted_my_int)); // u32 
'A' cast to Integer : 65 // my_int's type: u32

'Rust' 카테고리의 다른 글

[Rust] 제어문 : 분기 처리와 반복  (0) 2024.04.16
[Rust] 함수  (0) 2024.04.15
[Rust] 데이터 타입 : 복합 (Compound)  (0) 2024.04.15
[Rust] 불변성과 섀도잉  (0) 2024.03.31
[Rust] Cargo란?  (0) 2024.03.11

+ Recent posts