• [^] # Re: Une chose que j'ai oublié d'ajouter

    Posté par . En réponse à la dépêche Le langage Rust en version 1.0 alpha, on arrête de tout casser !. Évalué à 5.

    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à.