Débutant C demande aide

Fermé
FrançoisR - 9 sept. 2004 à 22:48
 Guki - 10 sept. 2004 à 18:06
Salut à tous le monde...

à cause de ma rentrée en Term, j'ai du mettre mon bouquin 'le language C' de coté... maintenant je le reprends pour continuer. J'en suis au chapitre où on apprends les opérateurs et l'incrémentation/décrémentation.

J'ai compris, sauf cet exercice corrigé... je suis sur qu"il y a des fautes :

/*opérations divers*/
#include<stdio.h>

main()
{
int x=1;

printf("x vaut initialement %d\n", x);
printf("x++ produit : %d\n", x++);
printf("x contient maintenant : %d\n", x);
return 0;
}

x=1;
y=3;
x*=-y;
printf("Résultat de x *= -y : %d\n", x);

return 0;
}



Ce programme est censé :
1) fonctionner
2) afficher d'après le livre : 'les deux fonctions printf() affichent 1 et 1, car dans l'expression x=x++, la valeur de x est copiée dans un emplacement temporaire, puis incrémentée de 1. Enfin, la valeur temporaire est afféctée à x, ce qui signifie que x est toujours égal à 1.'

fin de citation... J'espère que qulqu'un voudra bien répondre... c'est tellement simple pour quelqu'un de confirmé !

A+ et merci
Si quelqu'un pouvait me dire les erreurs, pour je le fasse marcher ! Je ne comprends pas pourquoi il ouvre une accolade, la ferme, et après remette une accolade fermée à la fin... c'est pas logique ?

6 réponses

Salut!

1/ renvoyer 0 sans type pour la fonction main => erreur
2/ un bloc d'instructions commence par { et se termine par } or ici il y a 1 ouverture et 2 fermetures => erreur
3/ faire 2 return à la suite implique que seulement le dernier affectera le type de la fonction
4/ il me semble les 2 1er printf affiche 1 puis le 3e affiche 2 et le 4e affiche -3
0
c surtout que tu as une accolade de trop après ton premier return(0);
0
Ravachol Messages postés 560 Date d'inscription vendredi 5 mars 2004 Statut Membre Dernière intervention 30 octobre 2005 120
10 sept. 2004 à 10:19
Salut.
La variable y n'est pas déclarée.
L'instruction return provoque un retour à la fonction appelante donc si tu as plusieurs return non conditionnés c'est le premier qui renverra le code de retour et fera quitter la fonction main, en l'occurence. Donc tout ce qui se trouve après ne sera jamais exécuter.

A++

La pensée ne commence qu'avec le doute.
ROGER MARTIN DU GARD
0
Merci de m'avoir corrigé en effet. :-)
0
Canard007 Messages postés 5929 Date d'inscription mercredi 26 mai 2004 Statut Contributeur Dernière intervention 18 septembre 2009 215
10 sept. 2004 à 10:19
oui tu as du melanger 2 exercices...

COIN!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bon ben merci les gars... je vous jure qu'il y a une erreure dans le bouquin... et pas la première ! Grrrrr... heureusement que vous êtes là, j'aurais pu me prendre la tête encore longtemps. Pour moi c'était logique qu'il y ait autant de { que de }... et que il y ait un seul return... mais face au bouquin, j'aurais pas pu imaginer d'aussi grosses fautes ! enfin bon, ça me rassure, j'ai donc bien compris laprog jusque là...

c marrant, plus on avance, plus on voit qu'il reste du chemin :-D

Merci !
FrançoisR
0
C'est pour ça qu'il faut abandonner dès que possible les bouquins ou en prendre qu'un seul et l'unique: la norme iso9899 (de préférence celle de 1990 la plus portable). Quand je disais qu'il n'y avait pas de rigueur dans les bouquins parfois... la bouse de vache n'est pas réservée qu'aux "majors" du disque, l'édition du livre se le permet aussi.
0