Erreur lors de la compilation en C

Fermé
Dim78 - Modifié par Dim78 le 21/09/2015 à 21:03
 Utilisateur anonyme - 22 sept. 2015 à 12:01
Bonjour,

Je débute totalement en C, je dois, dans le cadre d'un exercice de cours, écrire un programme qui revoit le code ASCII d'un entier.
J'ai donc écrit ce programme :
"
#include <stdio.h>
#include <math.h>

int main() {
int a;
printf("Donnez un entier compris entre 0 et 127\n");
scanf ("%d",&a);
printf ("Le caractère ayant '%d' pour code ASCII est",a);
if (-1 < a < 32) or (a == 127)
printf ("un caractère de contrôle non affichable\n");
else if ( 64 < a < 91 )
printf ("'%c' de l'alphabet latin minuscule\n",a);
else if ( 96 < a < 123 )
printf ("'%c' de l'alphabet latin majuscule\n",a);
else if ( 47 < a < 58 )
printf ("'%d', un chiffre\n",a);
else
printf ("un caractère de ponctuation affichable : '%c'\n",a);
return 0;
}
"
Lors de la compilation, il me met cette erreur : error: expected `;' before `printf'
printf ("un caractère de contrôle non affichable\n");

Je ne comprends pas, pourtant ma boucle IF est correct, non ?


Je vous remercie d'avance de votre aide, un étudiant en détresse

2 réponses

Utilisateur anonyme
21 sept. 2015 à 21:06
ton if est incorrect, il faut que toute l'expression soit entre parenthèses :

if ((-1 < a < 32) or (a == 127) )


sinon ton compilateur pense que or (a == 127) est la ligne de code suivante.

tu peux aussi simplifier en :
if (-1 < a < 32 || a == 127) 
0
Merci de ta réponse, j'ai appris à coder en ADA, je garde quelques mauvais réflexes que je vais devoir effacer ... :s
Mon programme compile normalement maintenant mais lors de l'exécution, dans tous les cas, il me met "un caractère de contrôle non affichable".
Quelqu'un a une idée ? ^^'.

J'aimerais ajouter que j'ai un warning par ligne de if aussi : "comparisons like `X<=Y<=Z' do not have their mathematical meaning [-Wparentheses]
else if ( 47 < a < 58 ) "
0
ah oui, j'avais même pas fais gaffe ^^ tu ois TOUT séparer en contraintes simple :
47 < a < 58

doit devenir
47 < a && a < 58
0
Dim78 > Utilisateur anonyme
21 sept. 2015 à 22:00
Oui, merci beaucoup mon programme marche mais j'ai une question : Pourquoi est-ce que l'on met && et pas || ?

En tout cas merci pour ton aide, c'est sympa d'aider les néophytes :)
0
Utilisateur anonyme
22 sept. 2015 à 12:01
si tu dis 47 < a < 58 , ca signifie a > 47 ET a < 58 et c'est bon

si tu fais OU, ca veut dire que si a vaut 2 cela correspond a a<58 et ca passe normalement
0