bonjour
en fait j'ai pas compris qq notions en c++
les flottants
double(caractere)
et l'opérateur virgule
a+
-----
bonjour
en fait j'ai pas compris qq notions en c++
les flottants
double(caractere)
et l'opérateur virgule
a+
Quand tu déclare une variable en c, tu dois préciser son type.
Si ta variable toto est destinée à prendre des valeurs entières tu déclares :
int toto;
Si tu veux travailler avec des valeurs "réelles" (3.14, 0.00001) tu déclare ta variable comme étant float ou double (double prend plus de place en mémoire mais est plus précis que float et peux prendre des valeurs plus grande, en général on utilise plutot double comme type)
L'opérateur virgule, là je ne vois pas de quoi tu veux parler, aurais tu un exemple ?
Erik
je v t'ecrire toute la description de cette fonction
"Les expressions sont évaluées de gauche à droite, puis le type et la valeur de la dernière expression sont utilisés pour renvoyer le résultat. Par exemple, à l'issue des deux lignes suivantes :
double r = 5;
int i = r*3,1;
r vaut 5 et i vaut 1. r*3 est calculé pour rien. "
et g ma compris l'exemple
Je pense qu'il faut comprendre :
double r = 5;
int i = r*3;
i=1;
Pour moi la ligne
int i = r*3,1;
n'est pas une ligne valide en C.
Si, c'est tout à fait valide, et comme the strange le dit, r*3 est évalué pour rien.Envoyé par erikJe pense qu'il faut comprendre :
double r = 5;
int i = r*3;
i=1;
Pour moi la ligne
int i = r*3,1;
n'est pas une ligne valide en C.
C'est le genre de trucs dont on peut se passer en C/C++ (je ne m'en suis jamais servi), mais on le voit le plus souvent dans des boucles for, du genre :
En temps normal on n'a droit qu'à uine seule instruction, avec la virgule on en a autant que l'on veut.Code:for(int i=0; i<5; ++i, j--, j=3*i)
Par contre :
int i = r*3,1;
Ne se traduit pas comme :
int i = r*3;
i=1;
Mais plutôt comme :
r*3;
int i=1;
C'est ici inutile.
Notez qu'en C et C++, une expression du genre
est tout à fait valideCode:variable;
Pire, on peut écrire
c'est totalement légal (et totalement inutile aussi )Code:3;
Salut,
int i = r*3,1;
Vous etes sûre de ça ? car pour moi ca passe pas à la compilation
ça serai pas plutot:
int i = r*3, j = 1;
la virgule permet juste de ne pas réecrire "int".
Je persiste à dire que
int i = r*3,1;
n'est pas valide (au sens norme ansi), moi non plus je ne peux pas compiler ça.
Hop, une ptite révision, ça fait pas de mal :
Ce code n'est en effet pas valide (merci azman, je suis allé un peu trop vite), car on déclare un int ayant pour nom '1', ce qui est interdit.Code:int i = r*3,1;
Par contre, ceci est correct :
Notez les parenthèses : r*3 est évalué (pour rien), et la valeur 1 est finalement affectée à i.Code:int i = (r*3,1);
La valeur d'une expression faisant intervenir l'opérateur 'virgule' est toujours la valeur de gauche. Mais attention aux parenthèses.
L'opérateur virgule peut aussi être utilisé un peu comme le point-virgule :
Ces 4 expressions en forment une seule, une instruction.Code:a=b-3, c=3*d, d=1-e, e=2*f;
Et cette expression a pour valeur 2*f
On peut donc écrire :
On aura ainsi X = e = 2*fCode:X = (a=b-3, c=3*d, d=1-e, e=2*f);
L'opérateur virgule peut aussi être utilisisé pour les déclarations de variables ayant le même type de base, comme l'a souligné azman.
Enfin, la virgule est aussi utilisée pour séparer les arguments d'une fonction.
Donc : attention aux ambiguités avec cet opérateur !
à la limite
i=3*r,1;
peut être accepter par un compilo, interprété comme
i=3*r;
1; // valide effectivement
mais pas dans une déclaration de variable sinon le compilo va comprendre
int i=3*r;
int 1;
Et ça ce n'est pas valide
Erik
Croisement avec g_h bon bah là tout le monde est d'accord
Dernière modification par erik ; 20/03/2005 à 18h06.