2009-07-18 15 views
1

Je suis PORTAGE une application VBA pour PHP et a couru dans cette merveilleuse petite pépite de code:Qu'est-ce que cela signifie? expr1 = expr2 Mod expr3 = 0

expr1 = expr2 Mod expr3 = 0 

je pensais qu'il comporte comme un opérateur ternaire mais quand je l'ai cassé vers le bas à simple si les déclarations alors le résultat n'était pas comme prévu. Donc, je demande à la brillante pile débordement communauté de m'aider et de le mettre dans des termes faciles à comprendre. Je sais qu'en regardant les autres réponses, je ne serai pas déçu. [/ Fin brown_nose>]

+0

Code Bad bad :) En regardant l'expression, mon esprit tout de suite supposer que c'est un dans un si comparision/while, etc. déclaration . Combiné cela avec le manque de groupage et VB assigment = opérateur de comparaison et la conversion de type dynamique, hehe. Si vous n'êtes pas familier avec la priorité de l'opérateur, il est très facile à lire comme (expr1 == expr2)% (expr3 == 0) ... ce qui peut facilement entraîner Diviser par zéro. Très mauvais :) –

Répondre

5

Il est l'opérateur de module:

a MOD b = remainder of a/b 

en PHP est le signe%:

a%b 

see php documentation here

Ainsi, la ligne

expr1 = expr2 Mod expr3 = 0 

signifie: expr1 i est vrai, si expr2 peut être divisé par expr3 sans restes: par exemple:

20 MOD 5 = 0 ==> TRUE 
22 MOD 5 = 2 ==> FALSE 
+0

mais à quoi sert le = 0 à la fin utilisé? – txmail

+0

Wow difficile d'assigner la réponse à, je choisis Peter, car il a écrit avec une meilleure explication (même si, alors qu'il entrait, je demandais à Jacob presque la même chose.Vous tous les deux rock.Merci! – txmail

8

Il est expr1 attribuer à une valeur booléenne qui indique si expr2 peut être divisé de façon égale (sans reste) par expr3. Rappelez-vous que = signifie == dans VB: D.

est ici ce qu'il ressemblerait avec les parenthèses implicites:

expr1 = ((expr2 Mod expr3) = 0) 
+1

Pourquoi l'opérateur = droite -associate? Je m'attendrais à ce que 'a = b = c' s'associe à' (a = b) = c'. –

+0

Donc est-il correct de penser comme ceci: En utilisant votre exemple si: expr2 = 2 expr3 = 4 expr1 serait vrai (1)? – txmail

+0

Peut-être que mon libellé était en arrière, mais non, le reste de 2/4 est 2, donc cela donnerait False, mais si expr2 est 4 et expr3 est 2, alors évaluer à Vrai – Jacob