История изменений
Исправление monk, (текущая версия) :
например, что делает битовый сдвиг влево при shift_amount >= bit_width
То, что указано в реализации трейта std::ops::Shl
для заданного типа. Возвращает для типа T
значение типа Shl<T>::Output
.
Для стандартных типов поведение описано в https://github.com/rust-lang/rfcs/blob/master/text/0560-integer-overflow.md
А из стандарта Си можно понять — это undefined behavior.
А из документации Rust можно понять, что там нет undefined behavior.
Как из стандарта Си понять, что выведет код
int x = 40000;
if(x*2 < 0) printf("minus"); else printf("ok");
?
Исходная версия monk, :
например, что делает битовый сдвиг влево при shift_amount >= bit_width
То, что указано в реализации трейта std::ops::Shl для заданного типа. Возвращает для типа T значение типа Shl::Output.
Для стандартных типов поведение описано в https://github.com/rust-lang/rfcs/blob/master/text/0560-integer-overflow.md
А из стандарта Си можно понять — это undefined behavior.
А из документации Rust можно понять, что там нет undefined behavior.
Как из стандарта Си понять, что выведет код
int x = 40000;
if(x*2 < 0) printf("minus"); else printf("ok");
?