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