CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] Syntax error introuvable...

darkhendrik
darkhendrik
Niveau 10
16 juin 2010 à 16:00:29

Bonjour à tous!

J'ai tenté pour mon initiation au langage C le premier TP du site du Zéro, c'est à dire réaliser un jeu où on doit deviner un nombre entre 0 et 100, malheureusement lors de la compilation on m'indique un "syntax error" et j'ai beau chercher je ne la trouve pas...

:d) Avant de vous montrer mon code, j'aurais aimé savoir à quoi sert un "warning" lors de la compilation; sert-il de suggestion en vue d'une amélioration :question:

:d) Voici mon code :

  1. include <stdio.h>
  2. include <stdlib.h>
  3. include <time.h>

int main()
{
//On génère un nombre au hasard compris entre 1 et 100
srand (time(NULL)); //Initialise le générateur de nombre aléatoires ainsi que les limites du jeu (nombre max et min)
const int MAX = 100, MIN = 1;
int nombreEntree=0;
int nombreMystere=int ((rand() % ( MAX - MIN + 1)) + MIN);

//On présente le jeu et on demande à l'utilisateur d'entrer un premier nombre
printf("Bonjour!\n Bienvenu dans le jeu du PLUS OU MOINS, le but de ce jeu est de deviner un chiffre aleatoire entre 1 et 100... \n\n Bonne chance!\n\n\n\n");

while (nombreEntree != nombreMystere)
{
printf("Quel est le nombre ?\n"); //On demande un nombre au hasard
scanf("%ld\n",&nombreEntree); //On récupère la saisie et on la stock dans la variable nombreEntree

if(nombreEntree==nombreMystere) //Si c'est le bon nombre du premier coup! (Cocu le gars...)
{
printf("Bravo! Vous avez trouve le nombre mystere!!!");
}
else if (nombreEntree<nombreMystere)//Cas où le nombre entré est inférieur au nombre mystère
{
printf("C'est plus!\n\n");
}
else //Sinon c'est le cas où le nombre entré est supérieur au nombre mystère
{
printf("C'est moins!\n\n");
}
}
printf("Bravo! Vous avez trouve le nombre mystere!!!\n");
return 0;
}

:d) J'espère que la syntaxe restera assez lisible... :doute:

En erreur il m'indique :
Line 11 error: syntax error before "int"

La ligne 11 :
"int nombreMystere=int ((rand() % ( MAX - MIN + 1)) + MIN);"

Cela est du à la fonction rand peut-être ?

En tout cas je vous remercie d'avance à l'attention que vous porterez à ce message :)

godrik
godrik
Niveau 30
16 juin 2010 à 17:30:38

Pour faire un typecast, il faut des parentheses autour du type:

int nombreMystere=(int) ((rand() % ( MAX - MIN + 1)) + MIN);

darkhendrik
darkhendrik
Niveau 10
16 juin 2010 à 18:59:15

Merci beaucoup goldrik ça marche bien maintenant! :)

Juste une question :
:d) on fait un type cast parce que la fonction rand nous renvoie un double ou quelque chose d'autre qu'un int? :question:

chris_27
chris_27
Niveau 10
16 juin 2010 à 19:09:44

J'ai l'impression qu'on fait un type cast pour que tu fasses une erreur dans ton code et que ça ne compile pas. :rire:

En tout cas, le man 3 rand nous dit :
int rand(void);

dnob700
dnob700
Niveau 10
16 juin 2010 à 21:14:00

Et oui les warnings indiquent la présence de quelque chose qui est probablement une erreur même si le compilateur peut continuer à travailler. Seulement il risque de ne pas faire ce que tu pense qu'il fera (encore plus que d'habitude je veux dire).

Donc c'est une bonne habitude à prendre que de corriger systématiquement tout les warnings. D'ailleurs, je te recommande de compiler ton code en activant tout les warning (-Wall -Wextra sous gcc, et il y a des options équivalentes pour les autres compilo). Tu peut à la limite en désactiver certains si tu es sûr de comprendre pourquoi ils se produisent et que tu ne veux pas les corriger.

Sous forums
  • Aide à l'achat Mac
  • Création de sites web
  • Internet
  • Macintosh
  • Création de Jeux
  • Linux
  • Programmation
  • Steam Deck
  • Hardware
La vidéo du moment