Voila je voudrais juste savoir si c'est possible d'utiliser un switch avec des char et mettre des case 'a' : ..... case 'b' : .... et si oui est ce qu'il y a quelque chose de spécial a faire pour y arriver ?
Voila je voudrais juste savoir si c'est possible d'utiliser un switch avec des char et mettre des case 'a' : ..... case 'b' : .... et si oui est ce qu'il y a quelque chose de spécial a faire pour y arriver ?
Oui, qu'on peut!
La syntaxe générale du switch est la meme (switch, case, break), quelque soit le type de données que tu testes.
Juste que pour tester un caractère, il faut le mettre entre ' '.
Et pourquoi ne pas simplement tester avec un petit programme?Envoyé par mello
Quelque soit le type de données tu testes ? Je ne crois pas. Si je ne me trompe pas, on ne fait un switch que sur des int et par extension des char donc pas sur n'importe quel type de données ...Envoyé par Linaa
Marco85
Même pas pour un float ?Envoyé par Marco85
Salut Linaa,
Loin de moi l'idée d'être contradictoire mais voici ce que je lis dans C Reference :
(c'est moi qui souligne ...)Envoyé par C Reference
Marco85
On ne peut comparer 2 float entre eux.Envoyé par Linaa
float a, b;
[...]
if(a==b) // marche pas
[...]
La norme dit que switch et case attendent un type int.Envoyé par mello
Oui, c'est possible, car en C, les constantes caractères sont de type int. Il n'y à rien à faire de spécial. Poste ton code si tu as un problème.et mettre des case 'a' : ..... case 'b' : .... et si oui est ce qu'il y a quelque chose de spécial a faire pour y arriver ?
Non. Ce n'est définit qu'avec le type int.Envoyé par Linaa
Certainement pas.Envoyé par Linaa
bonsoir à tous. voila j'ai un problème plus ou moins similaire. Pour un projet scolaire on me demande de faire un switch comprenant et des int (1,2,3,4,5) et un char(*) comment peut-on à la fois mettre l'un et l'autre?
Salut, tu récupères le code ASCII du caractère (donc un int ) en castant avec int.
Cordialement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 char c='a'; printf("\n caractère %c a pour code ASCII %d, c, (int)c );
Un pointeur, non mais le contenu d'un pointeur, si.
A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 #include <stdio.h> #include <stdlib.h> int main(void) { char car = '4'; char* pcar = &car; switch(*pcar) { case '4': printf ("Bingo!\n"); break; default: printf ("???\n"); break; } return 0; }
Pfeuh
Bonjour,
Les expressions de chaque case doivent être des constantes entières (§ 6.8.4.2), et doivent donc être évaluables lors de la compilation. Ce n'est pas le cas de l'adresse d'un objet.Envoyé par vanderclause.samuel
Peut-être devrais-tu davantage préciser ce qui t'est demandé (quelle est l'expression de contrôle, et quelles sont les expressions des case ?).
Quel est l'intérêt, étant donné qu'une constante de type caractère, est de type int en C ?
Bonne journée.
Ne veut-il pas plutôt dire qu'il a la valeur étoile (char c = '*';) et non un pointeur sur char (char * pt;) ?
peut-être bien, auquel cas, un simple case '*': devrait suffire
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager