J'ai une fonction, en cours de création, qui ressemble à ça :
bool f (std::string const& x)
{
return true;
}
Bien évidemment, mon compilo râle parce que le paramètre "x" n'est pas
utilisé. Histoire de le faire taire pendant que je réfléchis à
l'implémentation réelle de la fonction, je tente ceci :
bool f (std::string const& x)
{
return x, true;
}
Et là, il râle toujours... alors qu'avec ceci :
bool f (std::string const& x)
{
x;
return true;
}
il ne râle plus (et considère donc que "x" est utilisé).
Bon, c'est pas une affaire d'état, et j'imagine que c'est encore une
bizarrerie de mon compilo, mais si jamais quelqu'un sait pourquoi en
voyant "return x, true;" il ne réagit pas de la même façon qu'en
voyant "x; return true;"...
On Thu, 24 Jun 2004 11:03:20 +0200, Vincent Guichard :
je ne sais même pas si on peut avoir l'occasion de l'utiliser légitimement ;-)
Mais si, mais si, [...] dans les boucles for()
Oups... Oui, j'avais oublié ce cas-là.
Note que dans for( i=0, j; i<6 ; i++, j--)
La première virgule est un cas tordu, puisqu'elle force la déclaration (et donc le scope) des variables de boucle i et j en-dehors de la boucle for() -- c'est commun en C, mais peu conseillé en C++. Il est possible de l'écrire :
for (int i=0, j; ...
mais dans ce cas la virgule n'a plus du tout le même sens.
D'ailleurs, dans mon exemple, au lieu de :
int h() { return f(),g(); }
int main() { cout << h() << endl; }
int main() { int s= f(), g(); cout << s << endl; }
J'ai mis un petit moment à comprendre pourquoi ça ne fonctionnait pas ;-)
-- schtroumpf schtroumpf
On Thu, 24 Jun 2004 11:03:20 +0200, Vincent Guichard
<vg.bleuciel.sa@wanadoo.fr>:
je ne sais même pas si on peut avoir l'occasion de
l'utiliser légitimement ;-)
Mais si, mais si, [...] dans les boucles for()
Oups... Oui, j'avais oublié ce cas-là.
Note que dans
for( i=0, j; i<6 ; i++, j--)
La première virgule est un cas tordu, puisqu'elle force la déclaration
(et donc le scope) des variables de boucle i et j en-dehors de la
boucle for() -- c'est commun en C, mais peu conseillé en C++.
Il est possible de l'écrire :
for (int i=0, j; ...
mais dans ce cas la virgule n'a plus du tout le même sens.
D'ailleurs, dans mon exemple, au lieu de :
int h()
{
return f(),g();
}
int main()
{
cout << h() << endl;
}
int main()
{
int s= f(), g();
cout << s << endl;
}
J'ai mis un petit moment à comprendre pourquoi ça ne fonctionnait pas
;-)
On Thu, 24 Jun 2004 11:03:20 +0200, Vincent Guichard :
je ne sais même pas si on peut avoir l'occasion de l'utiliser légitimement ;-)
Mais si, mais si, [...] dans les boucles for()
Oups... Oui, j'avais oublié ce cas-là.
Note que dans for( i=0, j; i<6 ; i++, j--)
La première virgule est un cas tordu, puisqu'elle force la déclaration (et donc le scope) des variables de boucle i et j en-dehors de la boucle for() -- c'est commun en C, mais peu conseillé en C++. Il est possible de l'écrire :
for (int i=0, j; ...
mais dans ce cas la virgule n'a plus du tout le même sens.
D'ailleurs, dans mon exemple, au lieu de :
int h() { return f(),g(); }
int main() { cout << h() << endl; }
int main() { int s= f(), g(); cout << s << endl; }
J'ai mis un petit moment à comprendre pourquoi ça ne fonctionnait pas ;-)
-- schtroumpf schtroumpf
kanze
Fabien LE LEZ wrote in message news:...
On Thu, 24 Jun 2004 10:21:29 +0200, "PurL" :
"a, b" évalue a et b (dans ce sens, je crois), et renvoie b.
Je ne connaissais pas.
Rassure-toi, on peut très bien vivre sans connaître ce genre de technique -- je ne sais même pas si on peut avoir l'occasion de l'utiliser légitimement ;-)
On peut le surcharger pour permettre des choses du genre :
s = a, b, c ;
où s a un type qui représente un ensemble ou une liste, et l'opérateur de ',' est quelque chose du genre :
Note que je ne dis pas que ce soit une bonne idée. Seulement qu'on peut, et certains l'ont fait.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
Fabien LE LEZ <gramster@gramster.com> wrote in message
news:<1q3ld092oj76ivuc50iaifiphkfrd1598b@4ax.com>...
On Thu, 24 Jun 2004 10:21:29 +0200, "PurL" <purl-nospam@chez.com>:
"a, b" évalue a et b (dans ce sens, je crois), et renvoie b.
Je ne connaissais pas.
Rassure-toi, on peut très bien vivre sans connaître ce genre de
technique -- je ne sais même pas si on peut avoir l'occasion de
l'utiliser légitimement ;-)
On peut le surcharger pour permettre des choses du genre :
s = a, b, c ;
où s a un type qui représente un ensemble ou une liste, et l'opérateur
de ',' est quelque chose du genre :
"a, b" évalue a et b (dans ce sens, je crois), et renvoie b.
Je ne connaissais pas.
Rassure-toi, on peut très bien vivre sans connaître ce genre de technique -- je ne sais même pas si on peut avoir l'occasion de l'utiliser légitimement ;-)
On peut le surcharger pour permettre des choses du genre :
s = a, b, c ;
où s a un type qui représente un ensemble ou une liste, et l'opérateur de ',' est quelque chose du genre :
Note que je ne dis pas que ce soit une bonne idée. Seulement qu'on peut, et certains l'ont fait.
-- James Kanze GABI Software Conseils en informatique orientée objet/ Beratung in objektorientierter Datenverarbeitung 9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34
drkm
"Alexandre" writes:
oups, j'aurais du tout lire avant de poster. Ok, je comprends mieux. Donc c'est possible. On peut pas enlever un post ? Je sais, il vaut mieux lire avant d'écrire ;-)
Arrg. J'ai essayé de te répondre en privé, mais ton adresse est invalide !
--drkm
"Alexandre" <alex.g@netcourrier.com> writes:
oups, j'aurais du tout lire avant de poster. Ok, je comprends mieux. Donc
c'est possible.
On peut pas enlever un post ? Je sais, il vaut mieux lire avant d'écrire ;-)
Arrg. J'ai essayé de te répondre en privé, mais ton adresse est
invalide !
oups, j'aurais du tout lire avant de poster. Ok, je comprends mieux. Donc c'est possible. On peut pas enlever un post ? Je sais, il vaut mieux lire avant d'écrire ;-)
Arrg. J'ai essayé de te répondre en privé, mais ton adresse est invalide !