Подтвердить что ты не робот

С++ Что означает знак процента?

Я получил этот макрос С++ и задаюсь вопросом, что они означают по коду% 2 (знак процента)?

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

Ответ 1

Это для принятия модуля.

В принципе, это целочисленное представление остатка.

Итак, если вы разделите на 2, у вас будет 0 или 1 в качестве остатка.

Это хороший способ прокрутки чисел, и если вы хотите, чтобы четные строки были одним цветом, а нечетные строки были другими, модуль 2 хорошо работает для произвольного количества строк.

Ответ 2

В случае, если кому-то случается волноваться:% действительно возвращает остаток, а не модуль. Пока цифры положительны, нет никакой разницы.

Для отрицательных чисел может быть разница. Например, -3/2 может дать два возможных ответа: -1 с остатком -1 или -2 с остатком 1. По крайней мере, как это обычно используется в модульной арифметике, модуль всегда положителен, поэтому первый результат не соответствует модулю.

C89/90 и С++ 98/03 позволяют либо отвечать хотя до тех пор, пока/и% производят ответы, которые работают вместе, чтобы вы могли воспроизвести ввод (т.е. -1x2 + -1 → - 3, -2x2 + 1 = -3).

Для более новых версий стандартов (C99, C11 и С++ 11) больше нет выбора: целочисленное деление должно округлять до нуля. Например, -3/2 должно давать -1 с остатком -1. -3/2, дающий -2 с остатком от 1, больше не допускается.

Ответ 3

Это означает остаток от деления. В вашем случае разделите на 2, а остаток будет равен 0 или 1.

Ответ 4

Это означает по модулю. Обычно (x % 2) различает нечетные и четные числа.

Ответ 5

Это по модулю. Он возвращает то, что осталось после деления:

10/3 даст 3. - 1.

10% 3 дает это 1.

Ответ 6

Modulo возвращает остаток, оставшийся после деления. Это полезно, когда вам поручено определять четные/нечетные/простые числа в качестве примера:

Вот пример его использования для нахождения простых чисел:

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;

}

Ответ 7

Это остальная часть деления. Так как, как 5 разделены на 2, осталось 1, потому что 2 идет в 5 2 раза, но это только четыре, и вы получили это немного больше на конце

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"