Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

리터럴

숫자 리터럴은 타입 이름을 접미사로 추가하여 타입 어노테이션을 할 수 있습니다. 예를 들어, 리터럴 42i32 타입을 가져야 함을 지정하려면 42i32라고 씁니다.

접미사가 없는 숫자 리터럴의 타입은 어떻게 사용되느냐에 따라 달라집니다. 아무런 제약이 없다면 컴파일러는 정수에 대해서는 i32를, 부동 소수점 숫자에 대해서는 f64를 사용합니다.

fn main() {
    // 접미사가 붙은 리터럴은 초기화 시 그 타입을 알 수 있습니다.
    let x = 1u8;
    let y = 2u32;
    let z = 3f32;

    // 접미사가 없는 리터럴의 타입은 어떻게 사용되느냐에 따라 달라집니다.
    let i = 1;
    let f = 1.0;

    // `size_of_val`은 변수의 크기를 바이트 단위로 반환합니다.
    println!(`x`의 바이트 크기: {}, std::mem::size_of_val(&x));
    println!(`y`의 바이트 크기: {}, std::mem::size_of_val(&y));
    println!(`z`의 바이트 크기: {}, std::mem::size_of_val(&z));
    println!(`i`의 바이트 크기: {}, std::mem::size_of_val(&i));
    println!(`f`의 바이트 크기: {}, std::mem::size_of_val(&f));
}

앞선 코드에서 아직 설명되지 않은 몇 가지 개념이 사용되었습니다. 성급한 독자들을 위한 간단한 설명은 다음과 같습니다:

  • std::mem::size_of_val은 함수이지만, _전체 경로(full path)_를 사용하여 호출되었습니다. 코드는 _모듈_이라고 불리는 논리적 단위로 나뉠 수 있습니다. 이 경우, size_of_val 함수는 mem 모듈에 정의되어 있고, mem 모듈은 std _크레이트_에 정의되어 있습니다. 자세한 내용은 모듈크레이트를 참조하세요.