Débutant C : pourquoi ça marche pas ?
françois
-
nz_janvier -
nz_janvier -
Bonjour à tous,
je voudrais vous demander pourquoi mon programme C ne marche pas :
/* exercice 5 p 40 : multiplier 5 par 3, et afficher le résultat*/
#include <stdio.h>
int MyFunction (int x, int y)
{
x=3;
y=5;
int result;
result=x*y;
return result;
printf("3*5 font :", MyFunction);
return(0);
}
Merci
je voudrais vous demander pourquoi mon programme C ne marche pas :
/* exercice 5 p 40 : multiplier 5 par 3, et afficher le résultat*/
#include <stdio.h>
int MyFunction (int x, int y)
{
x=3;
y=5;
int result;
result=x*y;
return result;
printf("3*5 font :", MyFunction);
return(0);
}
Merci
A voir également:
- Débutant C : pourquoi ça marche pas ?
- Logiciel montage vidéo débutant - Guide
- Logiciel de programmation pour débutant - Guide
- Formation sap débutant pdf - Forum Logiciels
- Apprendre le coran pour débutant (+ pdf) - Télécharger - Histoire & Religion
- Comment utiliser un ordinateur pour un débutant - Astuces et Solutions
22 réponses
et le main() il est où ? et pourquoi tu fais 2 return ?
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
Les deux return, c'est parce que je voulais, pour le premier renvoyer la valeur x*y à MyFunction... Le deuxième pour finir mon programme, je croyait qu'il fallait soit mettre return(0), soit exit(0). C'est pas ça qui faut faire pour dire que le programme c'est correctement terminé ?
La fonction main() est toujours obligatoire ? Pourtant, dans un autre exercice, ma réponse était de trouver le programme suivant :
int MyFunction( int x, int y)
{
return (x*y);
}
Ya pas de main() et pourtant c'est le corrigé du bouquin... ya pas d'erreur. Dans ce cas, ça voudrais dire qu'il faut main() quand il y a printf ?
Aide moi à y voir un peu plus clair... je vais finir par faire péter mon ordi avec des programmes aussi foireux...
A tt de suite & merci !
La fonction main() est toujours obligatoire ? Pourtant, dans un autre exercice, ma réponse était de trouver le programme suivant :
int MyFunction( int x, int y)
{
return (x*y);
}
Ya pas de main() et pourtant c'est le corrigé du bouquin... ya pas d'erreur. Dans ce cas, ça voudrais dire qu'il faut main() quand il y a printf ?
Aide moi à y voir un peu plus clair... je vais finir par faire péter mon ordi avec des programmes aussi foireux...
A tt de suite & merci !
Sans main ou équivalent le compilo le compliera jamais. Ton bouquin est mauvais s'il ne le précise pas.
Oui la fonction main() est obligatoire. Si dans le corrigé elle y est pas c'est qu'elle est sous entendue.
PS: Je suis pas sur de tout, ya longtemps que j'ai pas fait de C
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
#include <stdio.h>
int MyFunction (int x, int y)
{
int result;
result=x*y;
return result;
}
void main()
{
printf("3 et 5 font %d",MyFunction(3,5));
return (0);
}
PS: Je suis pas sur de tout, ya longtemps que j'ai pas fait de C
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Oui c'est ça, sauf une petite erreur : il n'y a pas de void avant main() car return renvoie une valeur. On met void quand il n'y a pas de valeur à renvoyer. En tout cas, merci ! ça m'aide à progresser d'avoir des reponses aussi vite...
Une autre question : return(0) quand tu mets pas void, il renvoie la valeur à main() ? Ca peut prendre une valeur ?
Merci :-)
françois
Une autre question : return(0) quand tu mets pas void, il renvoie la valeur à main() ? Ca peut prendre une valeur ?
Merci :-)
françois
Tu peux renvoyer la valeur que tu veux, mais 0 veut souvent dire que le programme s'est terminé normalement, donc qu'il n'y a pas eu d'erreur lors de son execution.
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
Stocker le résultat dans un "result" est une instruction inutile parce que le return implique également une affectation d'une variable typé "int" d'où le type de la fonction.
De même que "return 0" c'est pas bon parce que le type de la fonction est "void" donc aucun entier à affecter sinon le reste me semble correct.
/* version alternative */
/*
<stdio.h> pour utiliser la fonction printf
<stdlib.h> pour utiliser la macrosubstitution EXIT_SUCCESS qui vaut 0
*/
#include <stdio.h>
#include <stdlib.h>
/* prototype de fonction */
int produit(int x, int y);
/* fonction principale ou debute le programe */
int main()
{
printf("3 * 5 %i =", produit(3, 5));
return EXIT_SUCCESS;
}
/* definition de fonction */
int produit(int x, int y)
{
return x * y;
}
De même que "return 0" c'est pas bon parce que le type de la fonction est "void" donc aucun entier à affecter sinon le reste me semble correct.
/* version alternative */
/*
<stdio.h> pour utiliser la fonction printf
<stdlib.h> pour utiliser la macrosubstitution EXIT_SUCCESS qui vaut 0
*/
#include <stdio.h>
#include <stdlib.h>
/* prototype de fonction */
int produit(int x, int y);
/* fonction principale ou debute le programe */
int main()
{
printf("3 * 5 %i =", produit(3, 5));
return EXIT_SUCCESS;
}
/* definition de fonction */
int produit(int x, int y)
{
return x * y;
}
Merci pour la réponse.
En revanche, tu m'as dit ou allait la valeur ?
Dans main() ?
Chui allé voir ton site : il est excellent ! (la musique, pas mal ! en +, c'est rapide, je suis en 56k et ça marche super bien !). On peut télécharger ou il y a des droits d'auteurs ?
Merci, je suis en rtain de faire l'inventaire des musique de ton site. Là c'est Robert Miles, children qui tourne
Allez, A+
françois
En revanche, tu m'as dit ou allait la valeur ?
Dans main() ?
Chui allé voir ton site : il est excellent ! (la musique, pas mal ! en +, c'est rapide, je suis en 56k et ça marche super bien !). On peut télécharger ou il y a des droits d'auteurs ?
Merci, je suis en rtain de faire l'inventaire des musique de ton site. Là c'est Robert Miles, children qui tourne
Allez, A+
françois
/* exercice 5 p 40 : multiplier 5 par 3, et afficher le résultat*/
#include <stdio.h>
void main()
{
int result;
result= 3 * 5;
printf("3 et 5 font %d",result);
return (0);
}
voilà la seule solution interessante dans un cas comme celui là
il est totalement stupide de faire une fonction pour un programme si simple pourquoi ?
1-taille de l'executable
2-mémoire utilisée par l'application = (varaiables+executable+fichiers quand il y en a à traiter.)
Il est inutile de definir des variables pour s'en servir comme constantes c'est meme une erreur qui peut provoquer des erreurs sur un programme complexe...
exemple
programme 9000octets
variables 1000octests
lors de l'execution le programme utilise 100000octets.
le même programme BIEN ecrit
programme 7500octets
variables750octets dont maxi 125 simultanément
constantes250 octets
soit lors de l'execution seulement 7875octets utilisés
alors sur un programme complexe imaginez la difference de l'ordre de la 10zaine de Mo en Ram ou pire en swap (donc acces disque donc ralentissements) !!!!
Pour les midis je pense qu'ils sont diffusables partout sans problèmes (je ne sais pas s'il y a des droits).
Merci pour mon jukebox, j'ai quand même ecouter plus de 2000 midis avant de selectionner les meilleurs ;-)
Bon alors la valeur retournée par main() est récupérée par le programme qui l'appelle. Par exemple tu es sous DOS et tu lance ton programme et a la fin du programme tu tapes
Et si le message s'affiche a la ligne en dessous c'est que le DOS a bien recu le code 0.
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
Merci pour mon jukebox, j'ai quand même ecouter plus de 2000 midis avant de selectionner les meilleurs ;-)
Bon alors la valeur retournée par main() est récupérée par le programme qui l'appelle. Par exemple tu es sous DOS et tu lance ton programme et a la fin du programme tu tapes
IF ERRORLEVEL 0 ECHO PROGRAMME CORRECTEMEMNT TERMINE
Et si le message s'affiche a la ligne en dessous c'est que le DOS a bien recu le code 0.
--------------------------------------------------------
L'informatique est un long fleuve pas tranquille !!!
Alors, il y a plein de messages qui sont arrivés...
Nab : en effet ton programme est bien plus simple. Mais si le corrigé est plus complexe, c'est surement pour m'apprendre à utiliser variables et fonctions car je ne fais que commencer ! C'est quelque chose de complètement nouveau, donc ça m'entraîne un peu...
poof65 : j'ai trouvé ma réponse tt seul pour le téléchargement : c'est pas marqué très loin de la chanson, juste en dessous...
A tt le monde :
Ce que je comprends pas c'est une fois on met main(), une autre fois on met int main().
int main() sert à mettre une valeur à main ? Alors main() à ne pas en mettre. Dans ce cas là, je ne vois pas à quoi sert void main() : ya marqué dans le bouquin que c'est pour pas affecter de valeur à main().
J'espère que j'ai correctement formulé ma phrase... elle est pas terrible, chè pas si on comprends quelque chose... à part le mot 'main()' ya pas grand chose... je sais pas comment la formuler ma phrase !
Merci à celui qui pourra répondre à ce charabia
françois
Nab : en effet ton programme est bien plus simple. Mais si le corrigé est plus complexe, c'est surement pour m'apprendre à utiliser variables et fonctions car je ne fais que commencer ! C'est quelque chose de complètement nouveau, donc ça m'entraîne un peu...
poof65 : j'ai trouvé ma réponse tt seul pour le téléchargement : c'est pas marqué très loin de la chanson, juste en dessous...
A tt le monde :
Ce que je comprends pas c'est une fois on met main(), une autre fois on met int main().
int main() sert à mettre une valeur à main ? Alors main() à ne pas en mettre. Dans ce cas là, je ne vois pas à quoi sert void main() : ya marqué dans le bouquin que c'est pour pas affecter de valeur à main().
J'espère que j'ai correctement formulé ma phrase... elle est pas terrible, chè pas si on comprends quelque chose... à part le mot 'main()' ya pas grand chose... je sais pas comment la formuler ma phrase !
Merci à celui qui pourra répondre à ce charabia
françois
En C il y a plusieurs type de variable void (qui ne contient rien), char (entier 8 bits), int (entier 32 bits sur CPU 32 bits), float (nombre à virgule flottante) + dérivés (long, signed, unsigned, etc).
A chaque fonction on associe un type de valeur de retour (une sorte de variable pour stocker le résultat de la fonction) et la fonction main n'échappe pas à la règle. Voilà tout.
A chaque fonction on associe un type de valeur de retour (une sorte de variable pour stocker le résultat de la fonction) et la fonction main n'échappe pas à la règle. Voilà tout.
Bonjour,
Autre version !
// Essai de fonction
#include <iostream>
using namespace std;
// Prototype de fonction et définition
int MaFonction(int x, int y) { return x*y;};
/* fonction principale ou debute le programe */
int main()
{
cout << MaFonction(3,5) << endl;
}
Lupin
Autre version !
// Essai de fonction
#include <iostream>
using namespace std;
// Prototype de fonction et définition
int MaFonction(int x, int y) { return x*y;};
/* fonction principale ou debute le programe */
int main()
{
cout << MaFonction(3,5) << endl;
}
Lupin
Pour encore être plus chiant :-P les commentaire avec // proviennent du C++ et ont été seulement ajoutés à la dernière révision de la norme C donc pour rendre le code le plus portable possible il est conseillé de conserver /* blablabla */ des fois qu'on compile sur un vieux machin de la préhistoire.
Donc si je comprends bien, il faut toujours mettre int devant main() ?
En tt cas, encore merci de répondre aussi vite que tu le fais !
A+
françois
En tt cas, encore merci de répondre aussi vite que tu le fais !
A+
françois