Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4740 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Utilité du ||

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

Utilité du ||

n°1259252
Caedes
Posté le 05-12-2005 à 16:30:22  profilanswer
 

Bonjour !
 
Ma question est toute simple : Existe-t-il une opération où un || (ou logique) ne pourrait pas être remplacé par un | ? Pour le && c'est évident (a = 0x10 , b = 0x1), a&b = 0 ; a&&b == TRUE. Mais pour || ? Je suis d'accord que d'un point de vue conceptuel c'est plus clair (|| , && , etc.) mais la question n'est pas là ;)
 
Merci   :hello:

mood
Publicité
Posté le 05-12-2005 à 16:30:22  profilanswer
 

n°1259258
chrisbk
-
Posté le 05-12-2005 à 16:32:55  profilanswer
 

hein ?
 
 
| = ou logique sur des bits
 
|| = verification de condition  
 
rien a voir with teh choucroute

n°1259259
chrisbk
-
Posté le 05-12-2005 à 16:33:13  profilanswer
 

enfin jvois meme pas pkoi tu reflechis a ca ?

n°1259261
art_dupond
je suis neuneu... oui oui !!
Posté le 05-12-2005 à 16:35:10  profilanswer
 

__
|| = 3,14...
 
__
|| = poutre en I
¯¯


Message édité par art_dupond le 05-12-2005 à 16:35:59
n°1259263
chrisbk
-
Posté le 05-12-2005 à 16:35:54  profilanswer
 

1point pruneaux pour ce gag pictographique

n°1259265
art_dupond
je suis neuneu... oui oui !!
Posté le 05-12-2005 à 16:36:39  profilanswer
 

ah ce n'était pas un jeu où il faut chaque fois rajouter une barre :??:

n°1259268
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:37:30  profilanswer
 

Caedes a écrit :

Bonjour !
 
Ma question est toute simple : Existe-t-il une opération où un || (ou logique) ne pourrait pas être remplacé par un | ? Pour le && c'est évident (a = 0x10 , b = 0x1), a&b = 0 ; a&&b == TRUE. Mais pour || ? Je suis d'accord que d'un point de vue conceptuel c'est plus clair (|| , && , etc.) mais la question n'est pas là ;)
 
Merci   :hello:


Je doute fort qu'utiliser "|" permette de faire du short-circuiting  [:khamal]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259269
Caedes
Posté le 05-12-2005 à 16:37:54  profilanswer
 

chrisbk a écrit :

hein ?
 
 
| = ou logique sur des bits
 
|| = verification de condition  
 
rien a voir with teh choucroute


 
oui ca je sais , merci  ;)  
 

chrisbk a écrit :

enfin jvois meme pas pkoi tu reflechis a ca ?


Parce que j'ai recu du code où tous les ou logiques (||) ont été codés avec des | et ca m'a surpris...  
En y réfléchissant ca fonctionne correctement. Et je pose donc la question : "Dans quel cas ne pourrait-on pas remplacer le || par un |" ?
 

n°1259271
Elmoricq
Modérateur
Posté le 05-12-2005 à 16:39:36  profilanswer
 

chrisbk a écrit :

enfin jvois meme pas pkoi tu reflechis a ca ?


 
Ben pour optimiser, voyons  [:petrus75]

Message cité 1 fois
Message édité par Elmoricq le 05-12-2005 à 16:40:21
n°1259273
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:40:18  profilanswer
 

Caedes a écrit :

Parce que j'ai recu du code où tous les ou logiques (||) ont été codés avec des | et ca m'a surpris...  
En y réfléchissant ca fonctionne correctement. Et je pose donc la question : "Dans quel cas ne pourrait-on pas remplacer le || par un |" ?


DANS TOUS §§§
SHORT-CIRCUITING §§§


Message édité par masklinn le 05-12-2005 à 16:40:45

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le 05-12-2005 à 16:40:18  profilanswer
 

n°1259276
chrisbk
-
Posté le 05-12-2005 à 16:40:49  profilanswer
 

Elmoricq a écrit :

Ben pour optimiser, voyons  [:petrus75]  


 
t'optimise rien, (cf post de masklinn) et tu risques les emmerdes si t'es un adepte de la fenantise, genre
 

Code :
  1. truc * prout = ...;
  2. if (prout && prout->youpi() == true)
  3. {
  4. ...
  5. }

n°1259280
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:42:28  profilanswer
 

chrisbk a écrit :

t'optimise rien, (cf post de masklinn) et tu risques les emmerdes si t'es un adepte de la fenantise, genre
 

Code :
  1. truc * prout = ...;
  2. if (prout && prout->youpi() == true)
  3. {
  4. ...
  5. }



Je pense qu'il était ironique :o
Ce genre de considérations étant un exemple parfait de premature optimisations qui optimisent rien du tout (sauf ptet en VB -- qui n'a pas de short-circuit sur And et Or) [:pingouino]
 
Sachant que dans VB.Net ils ont trouvé le moyen non pas de short-circuiter And et Or mais d'ajouter AndAlso et OrElse, qui sont identique à And et Or mais avec short-circuit http://membres.lycos.fr/angel2k/petrus/petruseaf.gif


Message édité par masklinn le 05-12-2005 à 16:43:44

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259281
Caedes
Posté le 05-12-2005 à 16:42:32  profilanswer
 

J'ai déjà écrit que ca ne fonctionnerait pas pour && / &... (bon ok je n'ai pas été très clair dans mon post) ..
 
tu parles de "pour optimiser" : c'est bien le pire : j'avais avant dans mon code des || et le gaillard me les a remplacé par des | ... comme si c'était plus rapide. :??:

n°1259283
Elmoricq
Modérateur
Posté le 05-12-2005 à 16:42:41  profilanswer
 

chrisbk a écrit :

t'optimise rien, (cf post de masklinn) et tu risques les emmerdes si t'es un adepte de la fenantise, genre


 
Euh, smiley petrus75 == phrase foireuse, second degré toussa

Message cité 1 fois
Message édité par Elmoricq le 05-12-2005 à 16:43:18
n°1259284
chrisbk
-
Posté le 05-12-2005 à 16:43:30  profilanswer
 

Caedes a écrit :


tu parles de "pour optimiser" : c'est bien le pire : j'avais avant dans mon code des || et le gaillard me les a remplacé par des | ... comme si c'était plus rapide. :??:


 
c'est une andouille le gus :d

n°1259286
chrisbk
-
Posté le 05-12-2005 à 16:44:05  profilanswer
 

Elmoricq a écrit :

Euh, smiley petrus75 == phrase foireuse, second degré toussa


 
OUI BIN JE POSTE PENDANT QUE STE CACAMOU DE FLACHE COMPILE ALORS JE SUIS UN PEU SUR LES NERFS QUOI §§§

n°1259287
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:44:22  profilanswer
 

Caedes a écrit :

J'ai déjà écrit que ca ne fonctionnerait pas pour && / &... (bon ok je n'ai pas été très clair dans mon post) ..
 
tu parles de "pour optimiser" : c'est bien le pire : j'avais avant dans mon code des || et le gaillard me les a remplacé par des | ... comme si c'était plus rapide. :??:


Il a fumé, tu le choppes et tu le déboite :o
 
Genre grave, stupidiser du code et diminuer sa lisibilité pour des cacas pareil, ça devrait être faute grave :o


Message édité par masklinn le 05-12-2005 à 16:44:58

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259288
Caedes
Posté le 05-12-2005 à 16:44:36  profilanswer
 

C est quand même un gars d'une boîte renommée qui nous a porté notre driver WDM sous linux 2.6... :-/

n°1259290
Elmoricq
Modérateur
Posté le 05-12-2005 à 16:45:03  profilanswer
 

chrisbk a écrit :

OUI BIN JE POSTE PENDANT QUE STE CACAMOU DE FLACHE COMPILE ALORS JE SUIS UN PEU SUR LES NERFS QUOI §§§


 
Donc pour te calmer tu viens faire du C sur le forum ?  [:pingouino]

n°1259291
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:45:33  profilanswer
 

Un consultant IBM [:petrus dei]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259292
Elmoricq
Modérateur
Posté le 05-12-2005 à 16:45:35  profilanswer
 

Caedes a écrit :

C est quand même un gars d'une boîte renommée qui nous a porté notre driver WDM sous linux 2.6... :-/


 
Tu as un bout de code précis à nous montrer ?  
Il avait peut-être une bonne raison... ou pas.

n°1259293
chrisbk
-
Posté le 05-12-2005 à 16:46:25  profilanswer
 

Elmoricq a écrit :

Donc pour te calmer tu viens faire du C sur le forum ?  [:pingouino]


 
[:pingouino] j'ai merdé ma vie

n°1259295
Caedes
Posté le 05-12-2005 à 16:47:35  profilanswer
 

Avant (code windows) :
 

Code :
  1. if ((channel->present)
  2. && ((open_channel->reference_clock_source != R27EX0) || !(control->external_line_busy[0]))
  3. && ((open_channel->reference_clock_source != R27EX1) || !(control->external_line_busy[1])) )


 
 
Après :
 

Code :
  1. if ((channel->present)
  2. && ((open_channel->reference_clock_source != R27EX0) | !(control->external_line_busy[0]))
  3. && ((open_channel->reference_clock_source != R27EX1) | !(control->external_line_busy[1])) )

Message cité 1 fois
Message édité par Caedes le 05-12-2005 à 16:50:50
n°1259297
Elmoricq
Modérateur
Posté le 05-12-2005 à 16:49:03  profilanswer
 

Ca ressemble à un block copy-paste raté [:petrus75]
Et y a pas un problème de parenthèses ? :??:

Message cité 1 fois
Message édité par Elmoricq le 05-12-2005 à 16:49:35
n°1259299
chrisbk
-
Posté le 05-12-2005 à 16:49:27  profilanswer
 

bah nan je vois pas, je trouve que c'est prendre une certaine liberté

n°1259304
Caedes
Posté le 05-12-2005 à 16:51:21  profilanswer
 

Elmoricq a écrit :


Et y a pas un problème de parenthèses ? :??:


Désolé j'ai édité  :sweat:  

n°1259306
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 16:53:31  profilanswer
 

Caedes a écrit :

Avant (code windows) :
 

Code :
  1. if ((channel->present)
  2. && ((open_channel->reference_clock_source != R27EX0) || !(control->external_line_busy[0]))
  3. && ((open_channel->reference_clock_source != R27EX1) || !(control->external_line_busy[1])) )


 
 
Après :
 

Code :
  1. if ((channel->present)
  2. && ((open_channel->reference_clock_source != R27EX0) | !(control->external_line_busy[0]))
  3. && ((open_channel->reference_clock_source != R27EX1) | !(control->external_line_busy[1])) )



Première version: il n'évalue "control->external_line_busy[0]" et "control->external_line_busy[1]" que si les conditions précédentes sont vraies, 2e version il les évalue à chaque fois :o
 
Là ça a l'air d'être une paire de booléens dans une petite structure donc ça doit pas coûter grand chose (il y a néamoins un coût) donc c'est pas franchement gênant, juste vachement moins logique quand on le lit (les sémantiques de && et || étant "imprimées" en clair dans le cerveau des codeurs, alors que "|" est planqué plus loin, sauf pour les âmes perdus faisant de l'arithmétique booléenne à longueur de journée). Par contre si le 2e membre était une fonction un peu longue à calculer ça ferait bien mal, surtout si le premier paramètre est beaucoup plus souvent évalué à TRUE que l'inverse


Message édité par masklinn le 05-12-2005 à 16:55:59

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259315
Caedes
Posté le 05-12-2005 à 16:58:11  profilanswer
 

ce qui m'inquiète, c'est que ce n'a pas été codé comme cela au début ; il a volontairement changé les || en | ... :/

n°1259316
Caedes
Posté le 05-12-2005 à 16:58:33  profilanswer
 

enfin merci à tous :hello:

n°1259318
masklinn
í dag viðrar vel til loftárása
Posté le 05-12-2005 à 17:00:27  profilanswer
 

Caedes a écrit :

ce qui m'inquiète, c'est que ce n'a pas été codé comme cela au début ; il a volontairement changé les || en | ... :/


Ben demande lui pourquoi il est con [:spamafote]


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259403
matafan
Posté le 05-12-2005 à 18:15:08  profilanswer
 

Le danger c'est que || est moins prioritaire que &&, alors que | est plus prioritaire que &&. Donc si tu n'avais pas de parentheses inutiles dans le code de depart, tu risques d'avoir une condition fausse en changeant simplement les || par |. Et puis sur le plan conceptuel, || et | ne servent pas a la meme chose.

n°1259761
fra0
Posté le 06-12-2005 à 03:39:21  profilanswer
 

en fait, ça n'a pas grand  chose à voir :
 
(1||2)==3; // faux
(1|2)==3; // vrai
 
vaut mieux voir le ou binaire comme un +

n°1259813
Sve@r
Posté le 06-12-2005 à 09:53:13  profilanswer
 

fra0 a écrit :

en fait, ça n'a pas grand  chose à voir :
 
(1||2)==3; // faux
(1|2)==3; // vrai
 
vaut mieux voir le ou binaire comme un +


1|5=5
1+5=6  :sarcastic:


Message édité par Sve@r le 06-12-2005 à 10:08:34
n°1259815
chrisbk
-
Posté le 06-12-2005 à 09:55:42  profilanswer
 

gnagnagna il voulait dire comme un operateur mathematique

n°1259832
Sve@r
Posté le 06-12-2005 à 10:06:28  profilanswer
 


 :D  :D  :D  
 

chrisbk a écrit :

il voulait dire comme un operateur mathematique


Exact... autant pour moi  :jap:


Message édité par Sve@r le 06-12-2005 à 10:08:16

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1259909
Caedes
Posté le 06-12-2005 à 12:17:36  profilanswer
 

fra0 a écrit :

en fait, ça n'a pas grand  chose à voir :
 
(1||2)==3; // faux
(1|2)==3; // vrai
 
vaut mieux voir le ou binaire comme un +


oui, ca tout le monde le sait je pense.
Ce n'était pas la question  ;)

n°1259971
Sve@r
Posté le 06-12-2005 à 13:46:07  profilanswer
 

Caedes a écrit :

oui, ca tout le monde le sait je pense.
Ce n'était pas la question  ;)


Hum... moi je vois 3 points de discussion

  • peut-on remplacer les "||" par des "|" sans nuire à l'exécution ?

Ben oui de par l'algèbre de Boole
 

  • peut-on remplacer les "||" par des "|" sans nuire tout court

Non. C'est comme si on remplaçait tous les ".c" par des ".i" (résultants du préprocesseur). On obtient un source fonctionnel mais plutôt illisible et inmaintenable. Imagine qu'on veuille ensuite inverser une expression; il faudra passer chaque "|" au peigne fin pour détecter s'il est mathématique ou logique
 

  • est-il plus rapide d'utiliser le "|" plutôt que le "||"

Personnellement je ne crois pas. Etant donné que le "|" est un opérateur mathématique, il sera exécuté intégralement sur tous ses opérandes alors que, dans une expression "prop1 || prop2 || prop3", l'évaluation s'arrête à "prop1" si cette proposition est vraie.

Message cité 1 fois
Message édité par Sve@r le 06-12-2005 à 13:46:24
n°1259976
masklinn
í dag viðrar vel til loftárása
Posté le 06-12-2005 à 13:47:43  profilanswer
 

Sve@r a écrit :

Personnellement je ne crois pas. Etant donné que le "|" est un opérateur mathématique, il sera exécuté intégralement sur tous ses opérandes alors que, dans une expression "prop1 || prop2 || prop3", l'évaluation s'arrête à "prop1" si cette proposition est vraie.


Attention, pas en VB :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1259977
chrisbk
-
Posté le 06-12-2005 à 13:48:47  profilanswer
 

ouais la mais on est en C [:el g]

n°1259981
masklinn
í dag viðrar vel til loftárása
Posté le 06-12-2005 à 13:49:28  profilanswer
 

chrisbk a écrit :

ouais la mais on est en C [:el g]


Ouais mais bon je préviens :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Utilité du ||

 

Sujets relatifs
Besoin d'aide sur l'utilite d'une equation logique[CSS] - De l'utilité de plusieurs feuilles CSS
RMI : qu'est-ce-que c'est? quel est l'utilité?[SqlServer] Utilité du découpage d'une grosse table ?
De l'utilité du "fflush"Quel est l'utilité, etc...de ce Code (voir sujet)???
Utilité des interfacesquelle est l'utilité du bouton hidden
de l'utilité d'une methode release dans un tag jsp.utilité de cacher son email
Plus de sujets relatifs à : Utilité du ||


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)