Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[C(++)] Petite question toute bête

17 réponses
Avatar
Aurelien Roux
Salut !

Petite question toute bête pour les spécialistes (mais pas trop) en C.

Je cherche à réduire la condition suivante :

if(Nbpoints && fe && Tdelay && Twidth)
{
break;
}

en quelque chose du genre

(Nbpoints && fe && Tdelay && Twidth) ? break : ;

Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
forme syntaxique.
Comment dois-je faire ?

A plus tard.

--
==========================================================
Aurélien Roux


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to debian-user-french-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org

10 réponses

1 2
Avatar
Thomas Labourdette
Bonjour,

Le jeudi 21 décembre 2006 10:15, Aurelien Roux a écrit :
Je cherche à réduire la condition suivante :

if(Nbpoints && fe && Tdelay && Twidth)
{
break;
}

en quelque chose du genre

(Nbpoints && fe && Tdelay && Twidth) ? break : ;



Pourquoi ?

Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
forme syntaxique.



Ben non.

Comment dois-je faire ?



Que veux-tu faire ?

@+
--
Debbie TANKAOUTCHOU (signature et citation aléatoires)
Quelle est la capitale de l'Italie ?
Madrid.
(Les bavures du maillon faible.)


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Marc Chantreux
>
(Nbpoints && fe && Tdelay && Twidth) ? break : ;



j'aurais plutot tendance a écrire :
if (Nbpoints && fe && Tdelay && Twidth) break;

Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
forme syntaxique.



a mon avis ca n'est pas le break qui pose probleme mais le fait que tu
ne mette rien apres :.

tu peux mettre un 0 histoire de ramener une valeur sans incidence sur le
deroulement du code:

#define DO_NOTHING 0

(Nbpoints && fe && Tdelay && Twidth) ? break : DO_NOTHING;


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Aurelien Roux
Le Thu, Dec 21, 2006 at 10:25:54AM +0100, Thomas Labourdette a écrit :
Bonjour,

Le jeudi 21 décembre 2006 10:15, Aurelien Roux a écrit :
> Je cherche à réduire la condition suivante :
>
> if(Nbpoints && fe && Tdelay && Twidth)
> {
> break;
> }
>
> en quelque chose du genre
>
> (Nbpoints && fe && Tdelay && Twidth) ? break : ;

Pourquoi ?



Heu, pour simplifier, et pour l'efficience.


> Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
> forme syntaxique.

Ben non.

> Comment dois-je faire ?

Que veux-tu faire ?



Bah, réduire syntaxiquement, au minimum.


--
========================================================= Aurélien Roux


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Aurelien Roux
Le Thu, Dec 21, 2006 at 10:29:42AM +0100, Marc Chantreux a écrit :


>
>(Nbpoints && fe && Tdelay && Twidth) ? break : ;

j'aurais plutot tendance a écrire :
if (Nbpoints && fe && Tdelay && Twidth) break;



Ah oui... Des fois, à vouloir faire simple, on oublie de faire simple.


>Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
>forme syntaxique.

a mon avis ca n'est pas le break qui pose probleme mais le fait que tu
ne mette rien apres :.



Non, c'est bien le break qui pose problème.
On peut laisser vide, a priori, la seconde partie.


tu peux mettre un 0 histoire de ramener une valeur sans incidence sur le
deroulement du code:

#define DO_NOTHING 0



L'intérêt c'est que la condition renvoie une valeur dans tous les cas ?


--
========================================================= Aurélien Roux


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Aurelien Roux
Le Thu, Dec 21, 2006 at 10:43:04AM +0100, Thomas Labourdette a écrit :
> > Pourquoi ?
>
> Heu, pour simplifier, et pour l'efficience.

Je ne vois pas ce que cela simplifie. Quant à l'efficience ...



Le nombre de lignes, déjà.
Bon si tu préfères, j'essaie de réduire au max un code (scientifique)
que j'ai écrit de manière pas optimale du tout il y a quelque temps.
L'utilisation de l'opérateur ternaire m'a d'ores et déjà bien aidé, mais
je ne connaissais pas cette limite.

Ça va plutôt amener le mainteneur à se poser des questions si il voit ça (dans
le cas où la syntaxe serait correcte).



Je suis le mainteneur, et je ne suis pas sûr que ça change de sitôt
(même si le code est évidemment libre !).



De toutes façons l'opérateur ternaire ?: retourne une valeur. Il n'y a pas de
sens à retourner 'break'.



Oui, en effet, dit comme ça, ça me paraît évident.
Merci.


PS : quel est le rapport avec Debian ?



Je sais pouvoir trouver ici des gens qui auront réponse à des questions
de ce style. Peut-être j'aurais dû préciser que je compile ça sur une
Debian SID ! ;p
Je pensais que mon tag [C(++)] était suffisant.

--
========================================================= Aurélien Roux


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Thomas Labourdette
Le jeudi 21 décembre 2006 10:32, Aurelien Roux a écrit :
Le Thu, Dec 21, 2006 at 10:25:54AM +0100, Thomas Labourdette a écrit :
> Bonjour,
>
> Le jeudi 21 décembre 2006 10:15, Aurelien Roux a écrit :
> > Je cherche à réduire la condition suivante :
> >
> > if(Nbpoints && fe && Tdelay && Twidth)
> > {
> > break;
> > }
> >
> > en quelque chose du genre
> >
> > (Nbpoints && fe && Tdelay && Twidth) ? break : ;
>
> Pourquoi ?

Heu, pour simplifier, et pour l'efficience.



Je ne vois pas ce que cela simplifie. Quant à l'efficience ...
Ça va plutôt amener le mainteneur à se poser des questions si il voit ça (dans
le cas où la syntaxe serait correcte).

> > Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
> > forme syntaxique.
>
> Ben non.
>
> > Comment dois-je faire ?
>
> Que veux-tu faire ?

Bah, réduire syntaxiquement, au minimum.



L'intérêt étant ?

De toutes façons l'opérateur ternaire ?: retourne une valeur. Il n'y a pas de
sens à retourner 'break'.

@+

PS : quel est le rapport avec Debian ?
--
Jacques AKAPAR (signature et citation aléatoires)
PROGRES : Doctrine qui consiste a compliquer ce qui est simple.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
David Soulayrol
Le jeudi 21 décembre 2006 à 10:15 +0100, Aurelien Roux a écrit :
Salut !

Petite question toute bête pour les spécialistes (mais pas trop) en C.

Je cherche à réduire la condition suivante :

if(Nbpoints && fe && Tdelay && Twidth)
{
break;
}

en quelque chose du genre

(Nbpoints && fe && Tdelay && Twidth) ? break : ;

Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
forme syntaxique.
Comment dois-je faire ?



Enlever simplement les accolades donne qq chose de suffisamment clair
non ? Si tu donnais la boucle complète, on pourrait mieux juger de
l'ensemble.
Enfin, tu devrais poster ça sur des listes dédiées à la programmation,
ou sur un newsgroup comme comp.lang.c++.

A plus tard.

--
========================================================= > Aurélien Roux






--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Thomas Labourdette
Le jeudi 21 décembre 2006 10:49, Aurelien Roux a écrit :
Le Thu, Dec 21, 2006 at 10:43:04AM +0100, Thomas Labourdette a écrit :
> PS : quel est le rapport avec Debian ?

Je sais pouvoir trouver ici des gens qui auront réponse à des questions
de ce style. Peut-être j'aurais dû préciser que je compile ça sur une
Debian SID ! ;p



:-)

Je pensais que mon tag [C(++)] était suffisant.



Sérieusement, tu devrais aller les forums fr.comp.lang.c ou fr.comp.lang.c++
(suivant le langage utilisé). Tu auras plus de chance de trouver des réponses
à tes différents problèmes.

@+

PS : Je suis abonné à la liste. Ce n'est pas la peine de me mettre en copie.
--
Edgar TADEUCHE-VOOGARAGE (signature et citation aléatoires)
Qu'est ce qu'une femme de 60 ans a de plus entre les seins qu'une femme
De 20 ans? Le nombril.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
Yves Rutschle
On Thu, Dec 21, 2006 at 10:34:14AM +0100, Aurelien Roux wrote:
> j'aurais plutot tendance a écrire :
> if (Nbpoints && fe && Tdelay && Twidth) break;



Moi aussi.

> >Mais, visiblement, on ne peut pas utiliser break comme ça dans cette
> >forme syntaxique.
>
> a mon avis ca n'est pas le break qui pose probleme mais le fait que tu
> ne mette rien apres :.

Non, c'est bien le break qui pose problème.
On peut laisser vide, a priori, la seconde partie.



Non. L'opérateur ternaire *renvoie* une valeur ou une autre.
Si tu laissais le 3eme paramètre vide, il renverrait quoi?

Et plus important:

Faut arreter. Tu n'optimises rien du tout, tu pourris ton
source. Le compilateur sait très bien faire ce genre chose,
et je t'invite à le vérifier toi même après avoir fait tous
ces tortilloux syntaxiques. Le code généré par ?: est
pratiquement toujours strictement le même que celui généré
par les if(){}else{} équivalents. Il faut donc choisir la
syntaxe qui correspond à l'idée du source, du point de vue
du source, et ne pas se poser de question sur
l'implémentation.

Y.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
Avatar
tnemeth
Selon Yves Rutschle :

On Thu, Dec 21, 2006 at 10:34:14AM +0100, Aurelien Roux wrote:
> > j'aurais plutot tendance a écrire :
> > if (Nbpoints && fe && Tdelay && Twidth) break;

Moi aussi.



Moi non (j'aurais mis le break dans un bloc), mais c'est parceque
j'utilise des règles et conventions de codage très strictes.


Et plus important:

Faut arreter. Tu n'optimises rien du tout, tu pourris ton
source. Le compilateur sait très bien faire ce genre chose,
et je t'invite à le vérifier toi même après avoir fait tous
ces tortilloux syntaxiques. Le code généré par ?: est
pratiquement toujours strictement le même que celui généré
par les if(){}else{} équivalents. Il faut donc choisir la
syntaxe qui correspond à l'idée du source, du point de vue
du source, et ne pas se poser de question sur
l'implémentation.



Dans mes bras ! (r)(c)(tm)

Effectivement, l'optimisation se fait rarement dans des modifications
de syntaxe de ce genre, mais beaucoup plus sûrement et efficacement
dans les algorithmes et structures de données employés.


Thomas.


--
Lisez la FAQ de la liste avant de poser une question :
http://wiki.debian.net/?DebianFrench
Vous pouvez aussi ajouter le mot ``spam'' dans vos champs "From" et
"Reply-To:"

To UNSUBSCRIBE, email to
with a subject of "unsubscribe". Trouble? Contact
1 2