리터럴
숫자 리터럴에는 접미사로 타입 어노테이션을 작성할 수 있습니다.
예를 들어, 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)); }
앞선 코드에서는 아직 설명하지 않은 개념이 몇 가지 사용되었습니다. 궁금하신 분을 위해 간단히 설명하겠습니다.