|
Bas de page | |
---|---|
Auteur | Sujet : Questions d'un débutant en C... |
Publicité | Posté le 30-03-2006 à 14:02:56 |
Trap D | L'expression c = getchar() != EOF; est évaluée comme c = (getchar() != EOF );
Pour ton programme
Pense que le prototype de main est soit
Message édité par Trap D le 30-03-2006 à 15:03:33 |
franceso |
A cause de la priorité des opérateurs,
est équivalent à
Le problème, c'est que l'évaluation de l'expression getchar() != EOF renvoie une valeur booléenne qui est tranformée en 0 ou 1 lorsque tu demandes de la stocker dans la variable entière c
Je pense que ce qu'ils attendent de toi ici est tout simplement un truc du genre :
tu n'as pas mis la bonne signature pour main. Voici une version conforme à la norme:
tu demandes d'afficher un float (%f) mais tu fournis à printf un argument de type int ! Pas étonnant qu'il fasse n'importe quoi. Normalement, ton compilateur a du te mettre un warning à cette ligne (si ce n'est pas le cas, tu devrais lui passer des options pour qu'il te donne plus de warnings).
et il t'affichera -1.000. Message édité par franceso le 30-03-2006 à 15:01:18 --------------- TriScale innov |
Trap D | En C, l' évaluation de getchar() != EOF ne renvoie pas une valeur booléenne mais un entier 0 ou 1. |
franceso |
OK, mes excuses : en C, le type booléen n'existe pas
--------------- TriScale innov |
floboss07 | Ok merci beaucoup, je comprends déjà mieu...
donne à c la valeur 1 si getchar() est différent de EOF, et 0 si il est égal à EOF? (1)
et non pas
et ce livre respecte la norme ANSI...("le langage C, norme ANSI, 2e edition" )(2)
Message cité 1 fois Message édité par floboss07 le 30-03-2006 à 16:27:15 |
skelter | 4) EOF ne peut pas etre dans le rang d'un char (sinon comment savoir si getchar renvoi EOF ou un caractere lu sur stdout), et 0 est un caractere valide ('\0', caractere nul)
|
Trap D | EOF est une valeur réservée spéciale ayant la valeur -1. Cette valeur ne peut pas être confondue avec n'importe quel caractère pouvant être lu dans un fichier.
|
floboss07 | Ok, merci.
Message édité par floboss07 le 30-03-2006 à 16:41:41 |
Trap D |
Publicité | Posté le 30-03-2006 à 16:57:23 |
franceso | 2-3) voici un extrait de la norme C90 (ISO/IEC 9899:1999)
le type de retour de la fonction main est toujours un entier. Il s'agit d'une valeur qui est renvoyée par ton programme au système d'exploitation. Les valeurs normalisées sont 0 (succès), EXIT_SUCCESS (succès) et EXIT_FAILURE (echec).
--------------- TriScale innov |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
Message cité 1 fois Message édité par Emmanuel Delahaye le 30-03-2006 à 17:14:29 --------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Trap D |
|
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Emmanuel Delahaye C is a sharp tool |
--------------- Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/ |
Trap D |
|
franceso |
floboss07 | Bon, nouvelle question, mais j'vais rester sur le même sujet pour pas trop foutre le bordel lol...
|
jlighty | il ne faudrait pas encadrer tes "if" dans le "while" ? (utilisation de { }) Message édité par jlighty le 31-03-2006 à 13:55:58 |
floboss07 | Merci, oui, c'était juste ça, erreur toute conne! |
floboss07 | Encore un petit problème :
Message édité par floboss07 le 31-03-2006 à 16:29:21 |
franceso | tu veux que la condition soit vraie uniquement dans le cas où c n'est ni ' ', ni '\t', ni '\n' => il faut mettre des 'et' (&& ) à la place des 'ou' (||) :
--------------- TriScale innov |
franceso | personnellement, j'aurais structuré ça un peu différemment :
--------------- TriScale innov |
floboss07 | Lol, vraiment merci, comme je pensais c'était encore une petite erreur toute conne...
|
skelter | on peut faire nettement plus concis
|
franceso | Oui, mais je crois que Floboss07 voulait éviter les retours à la ligne multiples lorsqu'il y a plusieurs espaces à la suite. --------------- TriScale innov |
skelter | ha oui, ok |
Publicité | Posté le |
Sujets relatifs | |
---|---|
[Résolu] [Batch] [Newbies] Diverses questions au sujet du Batch | "débutant" sous excel ... |
debutant: gestion de la mémoire | aide débutant en python |
probleme de debutant | [Débutant] [VB.NET] Insertion image à partir d'une datagridv |
Petit soucis d'un débutant ... | [débutant] Est ce que c'est faisable ? |
[Debutant] Heritage et appel de fonction | Aide débutant rêgle REGEXP |
Plus de sujets relatifs à : Questions d'un débutant en C... |