switch... - C++ - Programmation
Marsh Posté le 13-06-2006 à 17:13:02
baleine2 a écrit : bonjour,
|
C'est quoi l'intérêt d'un switch là?
Marsh Posté le 13-06-2006 à 17:17:12
Code :
|
et de toutes façon il manque les break dans le switch
Marsh Posté le 13-06-2006 à 17:18:44
mets des 'break' à la fin de chaque cas.
sinon, Masklinn a raison : il n'est pas très intéressant de mettre un switch : tu pourrais avantageusement remplacer tout ça par m_alfa = 0.1*(m_alfa+1.)
EDIT: grillé
Marsh Posté le 13-06-2006 à 17:45:25
Merci pour toutes vos réponses, c'est cool, je prend note de vos remarques.
Marsh Posté le 13-06-2006 à 18:47:28
C'est un topic typiquement C, pas C++ !!!
Marsh Posté le 14-06-2006 à 00:13:03
Ouais, bon, tout le monde ne passe pas forcement par le C non plus, hein?
Marsh Posté le 14-06-2006 à 17:37:03
franceso a écrit : tu pourrais avantageusement remplacer tout ça par m_alfa = 0.1*(m_alfa+1.) |
Dommage de faire l'addition de deux "int" en précision "double" => vaut mieux écrire m_alfa = 0.1*(m_alfa+1)
Marsh Posté le 14-06-2006 à 19:53:02
Sve@r a écrit : Dommage de faire l'addition de deux "int" en précision "double" => vaut mieux écrire m_alfa = 0.1*(m_alfa+1) |
et meme (vu que m_alfa est affecté par une expression dans laquelle il intervient)
m_alfa = 0.1 * ++m_alfa;
pour eviter la creation d'un temp
Marsh Posté le 14-06-2006 à 20:18:34
skelter a écrit : et meme (vu que m_alfa est affecté par une expression dans laquelle il intervient) |
Ce genre de conneries c'est le meilleur moyen de se préparer des bugs planqués
Marsh Posté le 14-06-2006 à 20:21:02
Sve@r a écrit : Dommage de faire l'addition de deux "int" en précision "double" => vaut mieux écrire m_alfa = 0.1*(m_alfa+1) |
?
m_alpha est probablement un flotant. C'est alors 1 (de type int) qui est converti en un flotant du type de m_alpha.
Marsh Posté le 14-06-2006 à 20:22:39
skelter a écrit : et meme (vu que m_alfa est affecté par une expression dans laquelle il intervient) |
m_alpha est un entier ? (peu de chance)
edit: bof, même si m_alpha était un entier, ça ne changerait pas grand chose pour l'optimiseur.
Marsh Posté le 14-06-2006 à 20:29:15
++fab a écrit : m_alpha est un entier ? (peu de chance) |
oui c'est sans doute un reel, j'avais pas vu le source original
Marsh Posté le 14-06-2006 à 20:34:30
masklinn a écrit : Ce genre de conneries c'est le meilleur moyen de se préparer des bugs planqués |
c'est surtout pas tres coherent, j'ai fait ca vite fais sans meme voir m_alpha est reel, mais connerie ou pas si je veux incrementer m_alpha puis le diviser par 10, je fais comme ca
m_alpha += 1;
m_alpha /= 10;
Marsh Posté le 14-06-2006 à 20:35:04
En même temps on fait rarement un switch avec un réel surtout si on le compare avec des entiers.
Marsh Posté le 14-06-2006 à 20:42:51
skelter a écrit : mais connerie ou pas si je veux incrementer m_alpha puis le diviser par 10, je fais comme ca |
Moi aussi. Pas forcément pour faciliter la tache à l'optimiseur, mais plutot pour être le plus portable possible en ce qui concerne la précision numérique (l'ordre d'évaluation des paramètres est dépendant de l'implémentation, et cela affecte souvent la précision numérique lorsuqe l'on change d'implémentation).
Marsh Posté le 14-06-2006 à 20:51:18
l'ordre d'evaluation depend de l'implementation mais j'ai du mal a imaginer comment ca pourrait influencer sur la precision. t'aurais pas un exemple ?
Marsh Posté le 14-06-2006 à 21:08:01
Je pense à ceci :
Code :
|
ça, c'est plus sur :
Code :
|
Marsh Posté le 14-06-2006 à 21:20:28
merci, d'ailleur a propos de ce que j'ai mis plus haut
m_alfa = 0.1 * ++m_alfa;
c'est un UB
Marsh Posté le 13-06-2006 à 17:07:00
bonjour,
j'ai un petit souci avec le codage d'un switch, je sais c'est bateau, mais j'ai du mal....
voici mon code:
Sachant que j'essaie d'utiliser une combo box, et d'en récupérer les valeurs....
m_Coef_Flou est ma combo box, et m_Alfa est ma variable qui va contenir la valeur sélectionnée dans ma combo box
merci pour votre aide