#1 Le 24/06/2021, à 10:47
- lodilod
probleme dans printf %d et %f
Bonjour,
Je debute en C, novice total, j'apprend les bases avec la collection pour les nuls.
Dans l'exercice 5, je rentre
#include <stdio.h>
int main()
{
printf("La valeur %d est un entier .\n",986);
printf("La valeur %f est un flottant. \n",98.6);
return(0);
}
Et quand je build and run avec c::blocks, la console me sort des nombres aléatoires, genre 156940785 pour %d et 0.00000 pour %f.
Je ne comprends pas.
Ai je un virus que j'aurais téléchargé au cours de mes nombreuses experimentations pour miner de la crypto en telechargeant tout ce qui traine?
J'avais laissé une appli utiliser mon cpu sur un pool et j'ai du rebooter et reinstaller kubuntu mais je crois que l'appli a meme changé le bios.
Bref serais t'il possible que mes librairies C soient corrompus?
Merci de vos reponse.
Hors ligne
#2 Le 24/06/2021, à 11:40
- Nuliel

Re : probleme dans printf %d et %f
Bonjour,
Point de virus, point de mineur de crypto, point de changement de BIOS (ou alors par fwupd mais il faut encore l'accepter), point de librairie C corrompue (si c'était le cas, ton système entier serait pété).
- il n'y a pas besoin de parenthèses à return, donc return 0 (ou return EXIT_SUCCESS si tu as inclus stdlib.h)
- j'ai tenté ton code en le mettant dans un fichier test.c, puis j'ai passé
nuliel@nuliel-desktop:~$ gcc -Wall -Wextra test.c -o res
nuliel@nuliel-desktop:~$ ./res
La valeur 986 est un entier .
La valeur 98.600000 est un flottant.
nuliel@nuliel-desktop:~$et ça marche très bien. A mon avis ton éditeur de code est mal configuré, ou il aime pas le passage direct par valeur (habituellement on passe des variables)
Les paramètres -Wall -Wextra permettent d'avoir plus de warning, et c'est très utile pour aider à corriger les erreurs détectées (il en restera, mais ça aide à enlever le gros)
A mon avis les valeurs fantaisistes proviennent de la stack, en d'autres termes tu lis un endroit qui n'a rien à voir et qui contient des valeurs qui ne sont pas forcément fixes.
Dernière modification par Nuliel (Le 24/06/2021, à 11:43)
[ poster un retour de commande ] [ poster une photo ]
Thinkpad x220, Dell latitude E7270 (i7 6600U, 16 Go de RAM, ...), Thinkstation E32 modifié: i5-4570, GTX 1060 6 Gb, 16 Gb de RAM, ...
Mon nouveau blog: nuliel.fr
Hors ligne
#3 Le 24/06/2021, à 15:19
- lodilod
Re : probleme dans printf %d et %f
Génial, merci
Je vais tenter la méthode de develloppez.com en passant direct par gcc et en declarant les variables.
J'ai certainement mal configuré Code::blocks.
Ouf je suis rassuré.
Hors ligne