en ADA le type natural est-il lui aussi cyclique ou, sinon, que se passe-t-il lorsque l'on arrive aux bornes ?
En Ada, il n'y a que les types définis comme modulaires qui le sont. Natural n'en fait pas partie.
subtypeNaturalisIntegerrange0..Integer'Last;
Il s'agit d'un sous-type du type entier et comme lui, un dépassement de capacité provoque une exception.
Le programme suivant est accepté par le compilateur moyennant un avertissement.
gnatmake nat.adb
gcc-4.9 -c nat.adb
nat.adb:7:15: warning: value not in range of type "Standard.Integer"
nat.adb:7:15: warning: "Constraint_Error" will be raised at run time
gnatbind -x nat.ali
gnatlink nat.ali
A l'exécution, il arrive ce que le compilateur avait dit
[^] # Re: Du haut niveau pour gérer correctement du bas niveau
Posté par Blackknight (site web personnel, Mastodon) . En réponse au journal Un décalage de 64 bits, ça vous inspire comment ?. Évalué à 3.
En Ada, il n'y a que les types définis comme modulaires qui le sont. Natural n'en fait pas partie.
Il s'agit d'un sous-type du type entier et comme lui, un dépassement de capacité provoque une exception.
Le programme suivant est accepté par le compilateur moyennant un avertissement.
A l'exécution, il arrive ce que le compilateur avait dit
Voilà, le principe du moindre étonnement dans toute sa splendeur :)