Problème d'interpretation ...
Bonjour,
Je n'ai pas trop l'habitude de rencontrer de telles expression et je bloque un peu sur son interpretation ...
La voici :
Code:
xCol = ((int)LOWORD(msg.lParam + decalage) > x + 1 ? ((int)LOWORD(msg.lParam + decalage) <= rc.right ? LOWORD(msg.lParam + decalage) : rc.right) : x + 2);
En general on a "resultat = condition ? val1 : val2;"
val1 ou val2 suivant si la condition est realisée
Si quelqu'un peut m'aider sur ce coup là ...
Merci d'avance.
Re: Problème d'interpretation ...
Citation:
Envoyé par dede92
Code:
xCol = ((int)LOWORD(msg.lParam + decalage) > x + 1 ? ((int)LOWORD(msg.lParam + decalage) <= rc.right ? LOWORD(msg.lParam + decalage) : rc.right) : x + 2);
Il suffit de décomposer l'expression en 2 étapes:
Code:
1 2 3 4 5
|
if ( ((int)LOWORD(msg.lParam + decalage) > x + 1 )
xCol = ((int)LOWORD(msg.lParam + decalage) <= rc.right ? LOWORD(msg.lParam + decalage) : rc.right);
else
xCol = x + 2; |
Ensuite:
Code:
1 2 3 4 5 6 7 8 9 10
|
if ( ((int)LOWORD(msg.lParam + decalage) > x + 1 ) {
if ( ((int)LOWORD(msg.lParam + decalage) <= rc.right ) {
xCol = LOWORD(msg.lParam + decalage);
} else {
xCol = rc.right;
}
} else {
xCol = x + 2;
} |
Jc
Re: Problème d'interpretation ...
Citation:
Envoyé par dede92
Code:
xCol = ((int)LOWORD(msg.lParam + decalage) > x + 1 ? ((int)LOWORD(msg.lParam + decalage) <= rc.right ? LOWORD(msg.lParam + decalage) : rc.right) : x + 2);
En general on a "resultat = condition ? val1 : val2;"
val1 ou val2 suivant si la condition est realisée
Ce genre de chose , je commence par l'écrire comme ça :
Code:
1 2 3 4 5 6
|
xCol = ((int)LOWORD(msg.lParam + decalage) > x + 1
? ((int)LOWORD(msg.lParam + decalage) <= rc.right
? LOWORD(msg.lParam + decalage)
: rc.right)
: x + 2); |
C'est plus clair ?
Je persiste à dire que la présentation du code est primordiale, ne serait-ce que pour soi...