Целочисленное переполнение без знака в Rust - PullRequest
0 голосов
/ 01 декабря 2018

Я новичок в Rust.В коде:

println!("{}", 4400202385408u64 * 34359738368u64);

Компилятор ржавчины выдает мне следующую ошибку:

error: attempt to multiply with overflow 

несмотря на то, что результат умножения находится в пределах std::u64::MAX

Может кто-нибудь указать мне, что происходит?

1 Ответ

0 голосов
/ 01 декабря 2018

несмотря на тот факт, что результат умножения находится в пределах std :: u64 :: MAX

Уверен, что это не так.

Преобразовав в гекс, вы 'делает 0x40080800800 * 0x800000000.Они оба по отдельности лучше, чем u32 MAX, поэтому, когда вы умножаете их вместе, они значительно превышают u64 max.

...