Bonjour, j'ai écris ce bout de code pour un cours d'oc. Lorsque je veux compiler code::blocks me signale une erreur au niveau de caractere = chiffre(int x). Pouvez vous me donner des explications, voici le code:
#include <stdio.h>
#include <stdlib.h>
char chiffre(int x);
int main(int argc, char *argv[])
{
int x = 0;
char caractere = 0;
scanf("%d", &x);
if(x>9)
{
caractere = chiffre(int x);
printf("%c", caractere);
}
else{
printf("%d",x);
}
return 0;
}
char chiffre(int x)
{
char carac = 0;
switch(x)
{
case 10:
carac = 'A';
break;
case 11:
carac = 'B';
break;
case 12:
carac = 'C';
break;
case 13:
carac = 'D';
break;
case 14:
carac = 'E';
break;
case 15:
carac = 'F';
break;
default:
printf("write n < 16");
break;
}
return carac;
}
Merci Edgar, c'est une bonne alternative ce que tu proposes, je vais l'utiliser. Je ne comprends pas pourquoi on ne peut pas spécifier les types pour les paramètres, il y a une explication? Une autre question, est que les cast sont déconseillés directement à l'intérieur des parenthèses?
Je ne comprends pas pourquoi on ne peut pas spécifier les types pour les paramètres, il y a une explication? Une autre question, est que les cast sont déconseillés directement à l'intérieur des parenthèses?
On ne peut pas spécifier les types des paramètres effectifs car tout est déjà connu: 1. Le type du paramètre formel grâce au prototype de la fonction appelée 2. Le type de la valeur passée, car en C toute valeur, variable et expression, a un type (le type de x est int déclaré ligne 8 dans ton cas). Donc ça compliquerait inutilement la grammaire du langage de permettre de spéficier le type du paramètres (quel type d'ailleurs, celui du paramètre effectif ou celui du paramètre formel?)
Cela dit, concernant le paramètre effectif, il existe l'opérateur de conversion de type que l'on peut utiliser dans les expressions.
caractere = chiffre((int)x);
Mais les conversions de type sont un signe de conception ratée, donc elles sont généralement mal vues, peu importe où.
- Edité par Marc Mongenet 13 juillet 2018 à 14:41:16
Fonction
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
On écrit "j'ai tort", pas "tord" qui est le verbe "tordre" à la 3ème personne de l'indicatif présent