Bonjour Jérémy et Paulf jujo, d'abord Jérémy
pas exactement, elle était
JJE a écrit :Source du message Comment se comporte le code généré par les instructions suivantes :
et non
Quel est le code généré par les instructions suivantes :[
cependant, elle répond quand même à ma question, il s'en fout complètement du problème.
Dans ton programme, aucune déclaration de la variable i, c'est normal ? la prend-il par défaut comme un entier 16 bits signés ?
à Paul, mais ça peut intéresser Jérémy
paulfjujo a écrit :Source du message c'est surtout la façon dont on veut representer le mot de 16 bits
, je ne suis pas entièrement d'accord, c'est un choix à faire en fonction de l'entité que va représenter une variable dans un programme. Par exemple un compteur qui ne peut pas dépasser 2^16-1 sera bien représenté par un unsigned integer, si on est sûr qu'il est cantonné à 256, un byte (qui est en général unsigned par défaut) fera bien l'affaire, mais une entité pouvant devenir négative, dans la plage -2^15, 2]15-1devra être représentée par un signed integer, en général le signed est optionnel dans les C que j'ai pratiqué
paulfjujo a écrit :Source du message IntToStr pour convertir un entier signé en texte
ou
WordToStr pour convertir un entier NON signé
et il a bien raison, les 16 bits ne se traduisant pas du tout de la même manière, si le bit 15 vaut 1
merci pour les copies d'écran qui éclairent très bien le problème. Il semble donc que le programmeur doive faire les pieds au mur pour assurer le non dépassement de capacité de son programme :
pour un signed, tester que le résultat reste positif s'il l'était avant l'encrémentation
pour un unsigned, tester que le résultat n'est pas nul, plus facile
En fait, je crois que tout le monde s'en fout, sauf les cas rares où ça pause problème et ce problème risque d'être délicat à trouver
Merci à vous deux