Il me semble (mais peut-etre me trompe-je) que le && est appel� ET imm�diat.

Ceci dans le sens o� d�s qu'une partie d'une expression est �valu� � fausse le reste 
de l'expression n'est pas �valu�e.

Ainsi on peut faire :
        if ((monObjet != null) && (monObjet.maMethode() != uneValeur)) {
                //du code
        }
si monObjet est null alors la partie droite est fausse et le reste de l'expression 
n'est pas �valu�e (et bien sur on ne rentre pas dans la sous-partie). Si monObjet 
n'est pas null alors on �value le reste de l'expression

alors que
        if ((monObjet != null) & (monObjet.maMethode() != uneValeur)) {
                //du code
        }

risque de g�n�rer une erreur (NullPointerException) dans le cas o� monObjet est null 
(car lors de l'execution monObjet.maMethode() va quand meme etre �valuer).

Je crois que l'op�rateur & seul doit etre utiliser seulement dans le cas o� l'on veut 
que l'ensemble de l'expression soit �valuer, ceci dans le but de d�clencher d'autres 
m�canismes : du genre monObjet.maMethode() modifierais un compteur par exemple (dans 
ce cas bien sur maMethode devra s'appliquer � un autre objet)

Il en va de m�me pour || et |. Le OU imm�diat s'arretant d�s qu'une partie d'une 
expression est �valu� � vrai (on rentre alors dans la sous-partie)

J'esp�re ne pas trop dire n'importe quoi !!!

Cedric



-----Message d'origine-----
De : St�phan BERNARD [mailto:[EMAIL PROTECTED]]
Envoy� : jeudi 4 avril 2002 16:09
� : [EMAIL PROTECTED]
Objet : & | && ?


Bonjour la liste,

Je viens de tomber sur un code java dans lequel tous les 
tests mettant en oeuvre une condition "et" (et aussi "ou") 
sont �crits avec un simple & (au lieu de &&).

Bref, l'erreur classique, surtout en C, mais compte tenu du 
fait que tout � l'air correctement parenth�s� (p.ex,
if ((i < 10) & (j > 15)) ), je me demandais si le & tout 
seul, effectu� sur des bool�ens gr�ce au parenth�sage, 
n'�tait pas suffisant.

La seule diff�rence que je vois serait au moment de la 
compilation, o� l'erreur renvoy�e par
if ( i < 10 & j > 15) et le m�me code avec && ne serait pas 
de m�me nature.
Par contre, je ne vois pas de contre-exemples pour :
- Un cas correctement parenth�s� o� le r�sultat serait 
diff�rent (� part en C)
- Un cas mal (ou pas) parenth�s� avec une compilation qui 
passe pour le & et qui ne passerait pas pour && 
(compte-tenu du d�sir de vouloir �crire une condition en 
&&, i.e. avec deux membres "souhait�s" bool�ens).

Quelqu'un voit un contre-exemple ?
Merci d'avance.
-- 
St�phan BERNARD (+33) 473 44 07 25      
[EMAIL PROTECTED]
LISC/CEMAGREF - 24 av. des Landais, BP 50085 - 63172 
Aubi�re Cedex

Répondre à