Accueil > Forum > > > > comportement étrange ...
comportement étrange ...
mercredi 11 octobre 2006 à 19:22:02 |
comportement étrange ...

clempar55
|
J'ai fait un petit programme tout à l'heure pour voir si on pouvait incrementer un double et j'ai fait le test suivant: double d=32.5; printf(" d=%f \n d++=%f \n d=%f \n", d , d++ , d ); Cela peut ne pas paraitre très clair, mais le fonctionnement est sensé être simple: on affiche la valeur de d, puis la valeur de d++ , et enfin la valeur de d incrémentée. La console devrait donc afficher: d=32.500000000 d++=32.50000000 d=33.500000000 Mais elle affiche en fait : d=33.500000 d++=33.500000 d=32.500000 Je me demandais ce qui peut bien etre responsable de ce comportement. Es-ce le compilo( j'utilise GCC )? Ou bien une mauvaise utilisation de l'operateur ++ , ou enfin la fonction printf ? Merci
|
|
mercredi 11 octobre 2006 à 19:41:31 |
Re : comportement étrange ...

blinix123
|
Ben...non...si ? La ligne d++ doit affiché 33.500000, c'est ce qu'elle fait...! ton code marche, ou alors j'ai pas suivi lol
|
|
mercredi 11 octobre 2006 à 19:43:18 |
Re : comportement étrange ...

blinix123
|
oups désolé j'ai rien dis j'ai mal lu, OUBLIS
|
|
mercredi 11 octobre 2006 à 20:32:11 |
Re : comportement étrange ...

buno
|
Sauf erreur de ma part, l'opérateur "++" est défini seulement pour les int. Pour tous les autres types, comportement non garantis... Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai... Le site de mon mariage
|
|
mercredi 11 octobre 2006 à 20:35:12 |
Re : comportement étrange ...

rrk275
|
Réponse acceptée !
C'est un probleme du a l'appel du ++ dans une pile d'argument , en effet rien ne te dit que les arguments sont appelés l'un a la suite de l'autre pour t'en convaicre #include <stdio.h> #include <stdlib.h> int aff(int nb) { printf("appel de aff(%d)\n",nb); return nb; } int main() { printf("%d %d %d\n",aff(0),aff(1),aff(2)); system("pause"); return 0; }  Louis
|
|
mercredi 11 octobre 2006 à 20:36:47 |
Re : comportement étrange ...

rrk275
|
Réponse acceptée !
oups dsl pour le double post j'oubliais, le ++ est utilisable avec les doubles ^^ #include <stdio.h> #include <stdlib.h>
int main() { double n = 2; printf("%llf\n",n); n++; printf("%llf\n",n); system("pause"); return 0; }
|
|
mercredi 11 octobre 2006 à 21:21:25 |
Re : comportement étrange ...

clempar55
|
Donc il fallait juste éviter d'utiliser ++ de cette manière. Merci rrk275 pour ta réponse.
|
|
mercredi 11 octobre 2006 à 23:00:50 |
Re : comportement étrange ...

rrk275
|
Pour un peu plus d'infos je vais expliquer rapidement des principes du fonctionnements d'appel d'une fonction .. ( vite fait .. je suis pas expert ^^) en gros , il met les arguments dans une pile , les fonctions etant calculé a l'empilement , seulement une fois dans ta fonction il depile le premier en 1er, donc le dernier en dernier, et le dernier est celui le plus en dessous donc celui qui a été empilé le premier .. cela explique cet ordre d'appel et il faut donc faire attention quand on appelle plusieurs fonctions dans des arguments ^^ 
|
|
mercredi 11 octobre 2006 à 23:08:03 |
Re : comportement étrange ...

nightlord666
|
Les fonctions sont pour la plupart en __stdcall ou en __cdecl (et pas en pascal), ce qui signifie qu'il pushe les paramètres de droite à gauche dans la pile.
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
|
|
jeudi 12 octobre 2006 à 00:45:13 |
Re : comportement étrange ...

BruNews
|
printf, sprintf et autres variantes sont en __cdecl pour cause de nbr de params indéfinis, il n'y a donc que l'appelant qui puisse dépiler car il est le seul à en connaitre le nombre.
ciao... BruNews, MVP VC++
|
|
Cette discussion est classée dans : valeur, printf, double, comportement, étrange
Répondre à ce message
Sujets en rapport avec ce message
Pb peut etre de compilateur ?! Need Help please [ par Orezza ]
Orezzasalut à tous, je ne comprends vraiment pas le Pb, le compilateur Visual C++ indique 0 erreur-0 warning, or kand j'execute mon prog des ke je ren
Conversion étrange [ par Ziman ]
Bonjour,je viens de tomber sur un cas bizarre lol. En fait, je fais ceci un moment :chaine[x] = 130;printf ("%d\n", chaine[x]);pour attribuer à l'octe
Problème de fonction [ par edwix ]
Bonjour tout le monde sa fait depuis 2 heures que je travaille sur un projet et je ne comprend pas comment faire pour affecter mes valeur par rapport
problem dans un code sudoko en c [ par sassi1985 ]
svp jai un mini projet c sur le code de jeux sodoku je fait le code mais j ai problème de la fichage il affiche des grand entier aléatoire voila mon
Lagrange Polynomial [ par bayans ]
Je souhaite ajouter ces formules dans le code ci-dessus, afin d'executer le cacul de Lagrange Polynomial Interpolation dans le langage c Au fait si le
Programme dynamic [ par bayans ]
Ceci est le programme que j'ai trouver sur le net . Le programeur a laisser un message disant que ce programme etait un progrmme dynamique bon etant q
Appel d'un fichier d'entete [ par batoule80 ]
Bonjour, je programme en c sous linux , il s'agit de résoudre une équation du second degrés. en premier lieu on insite l'utilisateur à saisir les coé
recherche comment faire fonctionner ce code via une interface graphique (pilotage port //) [ par cedpic ]
voici le code que j ai creer qui marche tres bien en mode console mais je souhaiterais les piloter par une interface graphique en remplacent les bouto
Problême avec Getchar... [ par Kolibot ]
Je débute en C et je suis tombé sur un problême... : #include #include int main (){int a,b,d;a = 0; b = 0;printf ("Calculatrice : \n\n");printf ("Vale
Comment afficher une valeur double en GUI ? [ par Gendal67 ]
Bonsoir,Je suis entrain de programmer une application qui buggue, apparamment à cause d'une mauvaise affectation de valeurs à des variables de type do
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|