Operator Modulo (%) w C/C++ z przykładami

W C lub C++, operator modulo (znany również jako operator modulo) , oznaczony jako %, to an operator arytmetyczny . Operator dzielenia modulo tworzy reszta dzielenia całkowitego, zwanego także modułem operacji.

Składnia operatora modułu

Jeśli x i y są liczbami całkowitymi, wówczas wyrażenie:

x   %   y; 

wymawiane jako x mod y. Na przykład 10% 2 będzie wymawiane jako Ten mod Two.

Wartość zwracana operatora Modulo

  • Jeśli y całkowicie dzieli x, wynikiem wyrażenia jest 0.
  • Jeśli x nie jest całkowicie podzielne przez y, to wynikiem będzie reszta z zakresu [0, y-1]
  • (X % I) < (x / 2) ………jeśli (x>= y)
  • (X % y) = x ……… jeśli (x
  • Jeśli y wynosi 0, to dzielenie przez zero jest błąd w czasie kompilacji .

Przykład operatora Modulo

Poniżej znajduje się program C/C++ demonstrujący działanie operatora modulo:

C++




// C++ Program to demonstrate the working of modulo operator> #include> using> namespace> std;> // Driver code> int> main(> void> )> {> > int> x, y;> > int> result;> > x = 3;> > y = 4;> > // using modulo operator> > result = x % y;> > cout < < result < < endl;> > result = y % x;> > cout < < result < < endl;> > // for different values> > x = 4;> > y = 2;> > result = x % y;> > cout < < result;> > return> 0;> }> // This code is contributed by Mayank Tyagi>

C




// C Program to illustrate the working of modulo operator> #include> int> main(> void> )> {> > int> x, y;> > int> result;> > x = 3;> > y = 4;> > // using modulo operator> > result = x % y;> > printf> (> '%d'> , result);> > result = y % x;> > printf> (> ' %d'> , result);> > // for different values> > x = 4;> > y = 2;> > result = x % y;> > printf> (> ' %d'> , result);> > return> 0;> }>

Ograniczenia operatora Modulo

Operator modulo ma kilka ograniczeń. The operator modułu % nie można zastosować Liczb zmiennoprzecinkowych tj. float lub double. Jeśli spróbujesz użyć operatora modulo ze stałymi lub zmiennymi zmiennoprzecinkowymi, kompilator zgłosi błąd.

Przykład 1: Program C/C++ demonstrujący ograniczenia operatora modulo.

C++




// C++ Program to demonstrate the restrictions of modulo> // operator> #include> using> namespace> std;> // Driver code> int> main()> {> > float> x, y;> > x = 2.3;> > y = 1.5;> > // modulo for floating point values> > result = x % y;> > cout < < result;> > return> 0;> }> // This code is contributed by Harshit Srivastava>

C




// C Program to illustrate the working of modulo operator> #include> int> main(> void> )> {> > float> x, y;> > float> result;> > x = 2.3;> > y = 1.5;> > // modulo for floating point values> > result = x % y;> > printf> (> '%f'> , result);> > return> 0;> }>

Wyjście

Compilation Error in C code :- prog.c: In function 'main': prog.c:19:16: error:  invalid operands to binary % (have 'float' and 'float')  result = x % y;  ^ 

Operator Modulo dla argumentów ujemnych

Znak wyniku dla operatora modulo jest zależny od maszyny w przypadku argumentów ujemnych, ponieważ akcja jest podejmowana w wyniku niedopełnienia lub przepełnienia.

Przykład 2: Program C/C++ demonstrujący operator modulo dla argumentów ujemnych.

C++




// C++ Program to demonstrate the working of the modulo> // operator for negative operands> #include> using> namespace> std;> // Driver code> int> main(> void> )> {> > int> x, y;> > int> result;> > x = -3;> > y = 4;> > // modulo for negative operands> > result = x % y;> > cout < < result < < endl;> > x = 4;> > y = -2;> > result = x % y;> > cout < < result < < endl;> > x = -3;> > y = -4;> > result = x % y;> > cout < < result;> > return> 0;> }> // This code is contributed by Harshit Srivastava>

C




// C Program to illustrate the working of the modulo> // operator with negative operands> #include> int> main(> void> )> {> > int> x, y;> > int> result;> > x = -3;> > y = 4;> > // modulo for negative operands> > result = x % y;> > printf> (> '%d'> , result);> > x = 4;> > y = -2;> > result = x % y;> > printf> (> ' %d'> , result);> > x = -3;> > y = -4;> > result = x % y;> > printf> (> ' %d'> , result);> > return> 0;> }>

Wyjście

-3 0 -3 

Notatka: Wartość zwracana w tym przypadku zależy od kompilatora.

Często zadawane pytania dotyczące operatora Modulo

Pytanie 1. Zdefiniuj moda.

Odpowiedź:

W językach programowania C/C++ mod odnosi się do operacji matematycznej, podczas której jedna liczba jest dzielona przez drugą, a reszta jest zwracana.

Można to wykonać za pomocą operator modulo (%) .

Pytanie 2. Co to jest arytmetyka modowa?

Odpowiedź:

Mod arytmetyczna odnosi się do procesu, w którym liczba owija się wokół pewnego punktu w taki sposób, że zawsze jest mniejsza od tego określonego punktu. Na przykład,

Rozważ liczbę n = 10 i punkt p = 20.
Kiedy zwiększymy n 10 razy, będzie to n = 20, ale w arytmetyce modułowej powinno być mniejsze niż określony punkt.

Jednym ze sposobów na osiągnięcie tego jest użycie operatora modulo jako:

n++; n = n % p; 

Więcej informacji na temat arytmatyki modułowej można znaleźć w artykule – Arytmetyka modułowa

Pytanie 3. Jaka jest różnica między operatorem modulo a operatorem dzielenia?

Odpowiedź:

Główna różnica między operatorem modulo a operatorem dzielenia polega na tym, że:

  • Moduł operatora (%) zwraca resztę z dzielenia jednej liczby przez drugą.
  • Operator dzielenia (/) zwraca iloraz po podzieleniu jednej liczby przez drugą.