C++ Ce n'est le signe de pourcentage que la moyenne?
J'ai eu ce c++ macro et me demande ce qu'ils entendent par le code%2 (le signe de pourcentage) ?
#define SHUFFLE_STATEMENT_2(code, A, B)
switch (code%2)
{
case 0 : A; B; break;
case 1 : B; A; break;
}
OriginalL'auteur | 2009-10-01
Vous devez vous connecter pour publier un commentaire.
C'est pour prendre un module.
Fondamentalement, il est une représentation entière de la le reste.
Donc, si vous divisez par 2, vous aurez soit 0 ou 1 comme un reste.
C'est une belle façon de boucle à travers les chiffres et si vous voulez la même lignes, une couleur et l'impair de lignes à un autre, le module 2 fonctionne bien pour un nombre arbitraire de lignes.
OriginalL'auteur James Black
Dans le cas où quelqu'un arrive à des soins: % vraiment renvoie le reste, pas le module. Aussi longtemps que les nombres sont positifs, il n'y a pas de différence.
Pour les nombres négatifs, il peut y avoir une différence cependant. Par exemple, -3/2 peut donner deux réponses possibles: -1 avec un reste de -1 ou -2 avec un reste de 1. Au moins comme il est normalement utilisé dans l'arithmétique modulaire, le module est toujours positive, donc le premier résultat ne correspond pas à un module.
C89/90 et C++98/03 permettre de répondre même si, comme longtemps que /et % produire des réponses qui travaillent ensemble afin que vous puissiez reproduire l'entrée (c'est à dire -1x2+-1->-3, -2x2+1=-3).
Pour des versions plus récentes des normes (C99, C11 et C++11) il n'y a plus le choix: integer division doit ronde vers 0. Par exemple -3/2 doit donne -1 avec un reste de -1. -3/2 donnant -2 avec un reste de 1 n'est plus permis.
+1. Et plusieurs fois j'ai voulu prendre le module d'un nombre négatif, mais c'est un instant de la garantie de bug. C'est un vrai défaut en C/C++: la garantie de compiler sans problème, et peut fonctionner sur une plate-forme, mais à l'instant (et mystérieux) crash lors de la compilation d'ailleurs.
OriginalL'auteur Jerry Coffin
Cela signifie que le reste d'une division. Dans votre cas, il faut diviser par 2 et le reste sera soit 0 ou 1.
Bien que le reste ne peut être que négative si le dividende est négatif (ou le diviseur, mais c'est 2 ici). Donc, en fonction de ce "code" est, qui ne pourrait pas être un problème, et nous espérons que le programmeur a pensé que, lors de documenter la manière dont les SHUFFLE_STATEMENT_2 macro est utilisée.
OriginalL'auteur Mark Ransom
Cela signifie modulo. Généralement
(x % 2)
discriminatoire à l'étrange et même numéros.OriginalL'auteur mouviciel
C'est le modulo. Il renvoie à ce qui est à gauche après la division:
10/3 donnera 3. - 1 est à gauche.
10%3 donne cette 1.
OriginalL'auteur RED SOFT ADAIR
Modulo renvoie le reste qui est à gauche après la division. Il est utile lorsque vous êtes chargé de la détermination de pair /impair /nombres premiers comme exemple:
Voici un exemple d'utilisation pour trouver les nombres premiers:
{
int isPrime=1;
int n;
}
OriginalL'auteur JonH
C'est le reste de la division.
Donc, comme la façon dont 5 divisé par 2 a un reste de 1, parce que le 2 va dans 5 2 fois mais qui n'est égal à quatre, et vous avez que peu plus sur la fin
5 % 2 == 1
Noter que la division de la valeur n'est pas calculée de n'importe où, donc si vous voulait à la fois l'ensemble total de la valeur entière de la division et il reste
"5 divisé par 2 est 2 avec reste 1"
OriginalL'auteur Ryan Cori