Un test est vrai si la valeur testée est différente de 0.
Donc on passera dans un if si ce qui est à l'intérieur des parenthèses (=le résultat de l'évaluation du test) est différent de 0.
1) Dans le cas d'un test sur une variable seule, c'est simple, si la valeur de la variable est différente de 0 on "entre" dans le if.
if (IsLogged[playerid])
{
printf ("Joueur logué");
}
2) Dans le cas où l'on teste l'appel d'un fonction, c'est la valeur de retour de la fonction qui est évalué. Si la fonction retourne 0, on n'entre pas dans le test.
if (IsPlayerAdmin (playerid))
{
printf ("Joueur admin");
}
3) Dans le cas d'une comparaison, la valeur évaluée est celle du résultat de la comparaison qui peut être soit vrai (=1), soit faux (=0)
if (a==3)
{
printf ("a vaut 3");
}
4) Dans le cas où l'on teste une affectation, c'est la valeur de la variable la plus à gauche qui est évaluée. On retombe dans le cas 1)
if (Vid=GetPlayerVehicleID (playerid))
{
printf ("Le joueur est dans un véhicule");
}
Il est même possible de faire plusieurs affectations en une seule ligne :
if (a=b=c=GetPlayerVehicleID (playerid))
{
printf ("a, b et c ont la valeur du vehicleID");
}
else
{
printf ("a, b et c valent tous 0");
}
Dans le cas ci-dessus, c'est normalement la valeur de a qui est utilisée mais comme toutes les variables ont forcément la même valeur, ça n'a aucune importance.
Dans le cas d'un test multiple il suffit de savoir que le signe && correspond à un multiplication et le signe || à une addition.
Par exemple :
<Expression1> && <Expression2>
Le résultat évalué est valeur de (Expression1) multipliée par valeur de (Expression2)
Donc si l'une des deux vaut 0, le résultat vaudra 0.
<Expression1> || <Expression2>
Le résultat évalué est valeur de (Expression1) plus valeur de (Expression2)
Donc le résultat vaudra 0, 1 ou 2 selon les cas.
Dans les deux exemples ci-dessus, <Expression1> et <Expression2> peuvent être n'importe quel des 4 cas cités plus haut.
++
Syg