Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1702 connectés 

  FORUM HardWare.fr
  Programmation
  C

  entier a valeur maximum. (RESOLU)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

entier a valeur maximum. (RESOLU)

n°1966365
deuxbagett​es
Posté le 16-02-2010 à 04:41:37  profilanswer
 

Bonjour,
 
Je me pose une petite question de débutant que je suis :
 
qu'arrive-t-il à un entier (non signé) qui est à sa valeur maximum (OxFFFFFFFF pas exemple pour un entier de 4 octet) et qu'on l'incrémente à nouveau ?
 
Reviens-t-il à zero ? (ça m'arrangerais  :D )  
 
Sinon, comment connaitre la valeur max q'un entier peut prendre ? A part faire sizeof(int) * 256 je vois pas.
 
Merci d'avance!

Message cité 1 fois
Message édité par deuxbagettes le 17-02-2010 à 02:14:57
mood
Publicité
Posté le 16-02-2010 à 04:41:37  profilanswer
 

n°1966385
Joel F
Real men use unique_ptr
Posté le 16-02-2010 à 08:43:49  profilanswer
 

MAX_INT est définie comme etant le plus grand entier disponible.
Par definition , MAX_INT+1 renvoit 0 sur les machines classiques à representation en complément à 2.
 
Classiquement, sur ces memes machines
unsigned x = ~0;
renvoit le bon pattern de bit.
 
 

n°1966389
Un Program​meur
Posté le 16-02-2010 à 09:00:11  profilanswer
 

deuxbagettes a écrit :

qu'arrive-t-il à un entier (non signé) qui est à sa valeur maximum (OxFFFFFFFF pas exemple pour un entier de 4 octet) et qu'on l'incrémente à nouveau ?


 
Devient 0.  Les non signes modelisent Z/nZ.
 


 
INT_MAX
 

Citation :

est définie comme etant le plus grand entier disponible.


 
Entier dans le sens int.  Il y a aussi LONG_MAX (long) SHRT_MAX, USHRT_MAX, UINT_MAX ULONG_MAX.
 

Citation :

Par definition , MAX_INT+1 renvoit 0 sur les machines classiques à representation en complément à 2.


 
Non.  -INT_MAX-1 soit INT_MIN.
 
Ensuite c'est un depassement de capacite et de plus en plus les compilateurs supposent que ca n'arrive pas (par exemple si gcc a bien une option pour permettre de dependre de ce comportement, mais elle n'est pas active par defaut), donc dependre de la valeur optenue est peu sage.
 

Citation :

Classiquement, sur ces memes machines
unsigned x = ~0;
renvoit le bon pattern de bit.


 
Pas besoin de dependre de quoi que ce soit:

Code :
  1. unsigned x = -1U;
  2. unsigned y = ~0U;


sont garntis etre UINT_MAX.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1966390
Joel F
Real men use unique_ptr
Posté le 16-02-2010 à 09:02:54  profilanswer
 

 

Voila pourquoi je dois pas posté avant le café v_v

 
Un Programmeur a écrit :


Non.  -INT_MAX-1 soit INT_MIN.


j'ai supposé au vu des hypothèses du PO qu'il travailler en non signé. Mais mea culpa, INT_MIN oui

 
Un Programmeur a écrit :


Ensuite c'est un depassement de capacite et de plus en plus les compilateurs supposent que ca n'arrive pas (par exemple si gcc a bien une option pour permettre de dependre de ce comportement, mais elle n'est pas active par defaut), donc dependre de la valeur optenue est peu sage.


clairement

Message cité 2 fois
Message édité par Joel F le 16-02-2010 à 09:03:14
n°1966391
Un Program​meur
Posté le 16-02-2010 à 09:06:21  profilanswer
 

Joel F a écrit :

Voila pourquoi je dois pas posté avant le café v_v


 
Personne ne devrait. (Et puis c'est quelque chose ou je me plante une fois sur deux; uniquement pour INT_MAX d'ailleurs, c'est au point ou je me demande s'il n'y avait pas un MAX_INT non standard pour l'implementation avec laquelle j'ai commence sur le C)


---------------
The truth is rarely pure and never simple (Oscar Wilde)
n°1966459
Joel F
Real men use unique_ptr
Posté le 16-02-2010 à 11:46:08  profilanswer
 

Un Programmeur a écrit :


Personne ne devrait. (Et puis c'est quelque chose ou je me plante une fois sur deux; uniquement pour INT_MAX d'ailleurs, c'est au point ou je me demande s'il n'y avait pas un MAX_INT non standard pour l'implementation avec laquelle j'ai commence sur le C)


 
Le truc c'ets que ca m'ai venu comme un réflexe, donc je me demande si tu n'as pas raison sur le truc antédiluvien non standard

n°1966624
deuxbagett​es
Posté le 16-02-2010 à 20:47:28  profilanswer
 

Bon les normands... Pas tout capté.  
 
 

Joel F a écrit :


j'ai supposé au vu des hypothèses du PO qu'il travailler en non signé. Mais mea culpa, INT_MIN oui
 


 
Oui j'ai précisé dans le premier message que je travaillais avec un int non signé (et ça veux dire quoi PO à la fin ? Ca deux fois qu'on m'appelle comme ça ici, je voudrais bien savoir  :jap: ).
 
J'ai cru comprendre qu'il ne valais mieux pas que je compte sur mon zéro une fois la limite dépassée ? Ou bien ?  :pt1cable:

n°1966641
Sve@r
Posté le 16-02-2010 à 22:02:48  profilanswer
 

deuxbagettes a écrit :

(et ça veux dire quoi PO à la fin ? Ca deux fois qu'on m'appelle comme ça ici, je voudrais bien savoir  :jap: ).


Posteur Originel => le créateur du topic
 

deuxbagettes a écrit :

J'ai cru comprendre qu'il ne valais mieux pas que je compte sur mon zéro une fois la limite dépassée ? Ou bien ?  :pt1cable:


Sisi. 0xFFFFFFFF + 1 = 0x0001 0000 0000
Comme seuls les 4 derniers octets seront stockés dans ta variable...
 
Pour faire simple, faut voir ta variable comme une horloge. Quand elle atteint sa valeur max et qu'on lui ajoute 1, elle repasse à 0.
Et si ta variable est signée, alors elle va de 0 à MAX / 2 - 1 puis si on lui ajoute 1 passe à -MAX / 2 et ensuite revient sur 0.


Message édité par Sve@r le 16-02-2010 à 22:04:01

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1966692
deuxbagett​es
Posté le 17-02-2010 à 02:14:35  profilanswer
 

Meeeerci beaucoup ^^


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  entier a valeur maximum. (RESOLU)

 

Sujets relatifs
[Résolu] Applet signée : pas d'avertissement de sécurité[Résolu] Batch to C
[Résolu] [Access2007] Création requete complexe[ KSH ] Etrange comportement d'un while dans un for - RESOLU -
[resolu] recherche et insertion structure liste chaine: la V2Utilisation valeur userform
Manipulation de bits. (RESOLU)[Résolu] Envoyer un signal à un autre ordinateur via internet
Attribuer une valeur à une variable en cliquant sur un lien[Résolu]Suppression de dossier en VBS
Plus de sujets relatifs à : entier a valeur maximum. (RESOLU)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR