The Rust documentation says the default integer type is i32, which means the biggest number a variable can save by default is 2147483647 i.e 2e31 - 1 . This turned out to be true too: if I try to save greater number than 2e31 - 1 in the x variable, I get the error literal out of range.
Code
fn main() {
let x = 2147483647;
println!("Maximum signed integer: {}", x);
let x = 2e100;
println!("x evalues to: {}", x);
}
but why do I not get error if I save value 2e100 in the x variable? It surely evaluates to greater than 2e31 - 1.
Output
Maximum signed integer: 2147483647
x evalues to: 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Code
fn main() {
let x = 2147483648;
println!("Maximum signed integer: {}", x);
}
Output
error: literal out of range for i32
--> src/main.rs:2:11
|
2 | let x=2147483648;
| ^^^^^^^^^^
|
= note: #[deny(overflowing_literals)] on by default