C ++百分号是什么意思?

时间:2009-10-01 14:50:54

标签: c++

我有这个c ++宏,并想知道代码%2(百分号)是什么意思?

#define SHUFFLE_STATEMENT_2(code, A, B)
switch (code%2)
{
  case 0 : A; B; break;
  case 1 : B; A; break;
}

7 个答案:

答案 0 :(得分:25)

用于取模数。

基本上,它是余数的整数表示。

因此,如果除以2,则余数为0或1。

这是循环数字的好方法,如果你想偶数行是一种颜色而奇数行是另一种颜色,模数2适用于任意数量的行。

答案 1 :(得分:18)

如果有人关心:%实际上返回余数,模数。只要数字是正数,就没有区别。

对于负数,可能会有所不同。例如,-3 / 2可以给出两个可能的答案:-1,余数为-1,或-2,余数为1.至少,因为它通常用于模运算,模数总是正的,所以第一个结果与模数不对应。

C89 / 90和C ++ 98/03允许任何一个答案,只要/和%产生一起工作的答案,这样你就可以重现输入(即-1x2 + -1-> -3,-2x2 + 1 = -3)。

对于较新版本的标准(C99,C11和C ++ 11),不再有任何选择:整数除法必须向0舍入。例如-3/2 必须给-1剩余的-1。不再允许-3/2给-2,余数为1。

答案 2 :(得分:10)

这意味着分裂的其余部分。在你的情况下,除以2,其余的将是0或1。

答案 3 :(得分:6)

这意味着模数。通常(x % 2)会区分奇数和偶数。

答案 4 :(得分:4)

这是模数。它返回除法后剩下的:

10/3将给出3. - 1。

10%3给出了这个1。

答案 5 :(得分:2)

模数返回除法后剩余的余数。当你的任务是确定偶数/奇数/素数作为一个例子时,它会很有用:

以下是使用它来查找素数的示例:

int main(void)

{     int isPrime = 1;     int n;

cout << "Enter n: ";
cin >> n;

for (int i=1; i<=n; i++)
{
    for (int j=2; j <= sqrt(static_cast<double>(i)); j++)
    {
        if(!(i%j))
        {
            isPrime=0;
            break;
        }

    }

    if (isPrime)
        cout << i << " is prime" << endl;
    isPrime=1;
}
return 0;

}

答案 6 :(得分:0)

这是除法的剩余部分。 因此,如果5除以2的余数为1,因为2进入5 2次,但只等于4,并且你最后得到了一点额外的

5%2 == 1

请注意,除非在任何地方计算除法值,因此如果您想要除法的整个整数值和它的余数

int answer = 5 / 2;
int remainder = 5 % 2;
cout << "5 divided by 2 is " << answer << " with remainder " << remainder;

“5除以2是2,其余为1”