리터럴
숫자 리터럴에는 접미사로 타입 어노테이션을 작성할 수 있습니다.
예를 들어, 42i32
는 42
리터럴을 i32
타입으로 지정한다는 의미입니다.
접미사가 없는 숫자 리터럴은 어떻게 사용되느냐에 따라서 타입이 달라집니다.
제약 조건이 없을 경우, 컴파일러는 정수에 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)); }
앞선 코드에서는 아직 설명하지 않은 개념이 몇 가지 사용되었습니다. 궁금하신 분을 위해 간단히 설명하겠습니다.