ce qui est très different du C ou le programme est indéfini.
Ça dépend...
Ce que tu dis c’est défini dans le « standard » de Rust ou c’est seulement un truc proposé par le compilo ?
En C, Selon le standard :
- type signé : comportement indéfini si overflow
- type non-signé: comportement « modulo »
Par contre, avec les compilateurs (GCC et clang au moins), il y a des options pour :
- forcer le comportement « modulo » et complément à deux (-fwrapv)
- trap en cas d’overflow sur les entiers signés (-ftrapv et -fsanitize=signed-integer-overflow)
Donc au final, niveau implémentation le C offre la même chose que Rust sur ce point là.
[^] # Re: Une chose que j'ai oublié d'ajouter
Posté par grim7reaper . En réponse à la dépêche Le langage Rust en version 1.0 alpha, on arrête de tout casser !. Évalué à 5.
Ça dépend...
Ce que tu dis c’est défini dans le « standard » de Rust ou c’est seulement un truc proposé par le compilo ?
En C, Selon le standard :
- type signé : comportement indéfini si overflow
- type non-signé: comportement « modulo »
Par contre, avec les compilateurs (GCC et clang au moins), il y a des options pour :
- forcer le comportement « modulo » et complément à deux (
-fwrapv)- trap en cas d’overflow sur les entiers signés (
-ftrapvet-fsanitize=signed-integer-overflow)Donc au final, niveau implémentation le C offre la même chose que Rust sur ce point là.