Rust: Se debe documentar el comportamiento de redondeo de división / resto de enteros

Creado en 7 jul. 2015  ·  3Comentarios  ·  Fuente: rust-lang/rust

Usando Google, puedo encontrar muchos argumentos antiguos sobre cómo debería funcionar la división de enteros en Rust, pero no puedo encontrar nada en la referencia, los documentos de API para los tipos de enteros o los documentos de API para el rasgo Div que dice lo que realmente se decidió. (Y la documentación parece implicar que / , checked_div y wrapping_div pueden no hacer lo mismo). Esto se confunde aún más por la documentación de tipo entero que aparentemente a veces usa / para referirse a la división de enteros y, a veces, a la división matemática. (No se me ocurre ninguna otra interpretación razonable de floor(self / other) en la documentación de wrapping_div .) Sería bueno si esto estuviera claramente documentado en alguna parte, ya que varía entre los idiomas y es uno de las principales confusiones con la aritmética de enteros.

Todos 3 comentarios

http://doc.rust-lang.org/reference.html#behavior -not-consider-unsafe habla sobre el 'desbordamiento' y menciona la envoltura, pero tienes razón en que podemos sacar a la luz esto mejor.

@steveklabnik

Se trata de redondear, no de envolver. Usamos sdiv LLVM, que se redondea a cero (y srem tiene el mismo signo que el dividendo). Deberíamos documentar esto (la documentación para wrapping_div actualmente _siste_, afirmando que se redondea hacia un infinito negativo).

Esto también debería dejar una advertencia, porque el número entero / entero no siempre se desea y ocurre por accidente. Solo un pensamiento si alguien está leyendo esto.

¿Fue útil esta página
0 / 5 - 0 calificaciones