Difference entre | et || en C++

Difference entre | et || en C++ - C++ - Programmation

Marsh Posté le 02-06-2006 à 14:25:36    

Bonjour a tous....
 
Je suis un peu inquiet...j ai fait un code C++ en utlisant "||" dans le sens et/ou...Est ce correct ? Quelle est la difference entre "|" et "||" ?
 
Merci a tous
 
Sylvain

Reply

Marsh Posté le 02-06-2006 à 14:25:36   

Reply

Marsh Posté le 02-06-2006 à 14:26:39    

|| ou logique
| ou binaire


Message édité par zapan666 le 02-06-2006 à 14:28:23

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 02-06-2006 à 14:33:07    

|| est l'opérateur ou *logique*. En gros, <conditionA> || <conditionB> est vrai si condiionA est vraie ou si conditionB est vraie.
 
| est l'opérateur ou *binaire*. Si a est un int de valeur 3 (sa représentation bnaire est 00000011) et b est un entier de valeur 5 (sa représentation binaire est 00000101), alors c = a | b vaut 7 (sa représentation binaire 00000111 est obtenue en faisant un "ou" bit-à-bit sur les représentations binaires de a et b)
 
En pratique, il y a de fortes chances que tu n'utilises que ||
 
edit: GRILLAID !


Message édité par franceso le 02-06-2006 à 14:33:50

---------------
TriScale innov
Reply

Marsh Posté le 02-06-2006 à 15:16:28    

precision importante, on pourrait tres bien ecrire
<conditionA> | <conditionB>
la difference ici c'est que conditionB est évaluée meme si conditionA est vrai (les 2 expressions-operandes sont evaluées avant d'effectuer l'operation)

Reply

Marsh Posté le 02-06-2006 à 15:18:21    

ouais enfin si tes conditions renvoie pas 1 mais "un entier ayant une valeur non nulle" tu risque d'avoir des surprises avec le | utilisé dans un if.
l'utilisation du | est vraiment très rare et dans des cas particuliers ou quand t'en a besoin tu sais vraiment pourquoi tu l'utilise ;)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 02-06-2006 à 15:26:45    

ce que je veux faire c est :
 
Si (a<11 || b<22)  
 
si a< 11 et/ou b<22
 
C est donc correct ?

Reply

Marsh Posté le 02-06-2006 à 15:31:12    

sylvaing a écrit :

ce que je veux faire c est :
 
Si (a<11 || b<22)  
 
si a< 11 et/ou b<22
 
C est donc correct ?


Oui oui, c'est ça.
 
 
 
skelter> j'ai effectivement oublié de parler de l'évaluation paresseuse :jap:
ceci dit, je ne suis pas sûr qu'il soit judicieux de parler de "if( condA | condB )" à quelqu'un qui est visiblement débutant...


---------------
TriScale innov
Reply

Marsh Posté le 02-06-2006 à 15:32:14    

0x90 a écrit :

ouais enfin si tes conditions renvoie pas 1 mais "un entier ayant une valeur non nulle" tu risque d'avoir des surprises avec le | utilisé dans un if.


 
eu la non, pour tout entier n
 
n | 0 == n
 
au niveau de la logique booleenne c'est identique a ||

Message cité 1 fois
Message édité par skelter le 02-06-2006 à 15:32:52
Reply

Marsh Posté le 02-06-2006 à 15:35:09    

franceso a écrit :


skelter> j'ai effectivement oublié de parler de l'évaluation paresseuse :jap:
ceci dit, je ne suis pas sûr qu'il soit judicieux de parler de "if( condA | condB )" à quelqu'un qui est visiblement débutant...


 
oui, en effet, ne jamais utiliser | quand on pourrait utiliser || a la place

Reply

Marsh Posté le 02-06-2006 à 16:20:27    

skelter a écrit :

eu la non, pour tout entier n
 
n | 0 == n
 
au niveau de la logique booleenne c'est identique a ||


 
effectivement j'ai dit une petite bétise [:cupra] c'est pour le & que ca pose des problèmes en fait...


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed