我是Rust的初学者。在代码中:
println!("{}", 4400202385408u64 * 34359738368u64);
rust编译器给我以下错误:
error: attempt to multiply with overflow
尽管乘法结果在std::u64::MAX
之内
有人可以指出我的情况吗?
答案 0 :(得分:1)
尽管乘法结果在std :: u64 :: MAX之内
肯定不是。
转换为十六进制,您正在执行0x40080800800 * 0x800000000。它们各自都在u32 MAX之上,因此,当您将它们相乘时,它们都在u64 MAX之上。