Dziwne, a nawet funkcje w programowaniu w C
Operator modułu w C
Operator modułu w C (reprezentowany jako symbol "%") działa jako rodzaj podziału. Ale zamiast dzielenia dwóch liczb i zwracania ilorazu do użytkownika, operator modułu dzieli dwie liczby i zwraca resztę jako liczbę całkowitą. W tym przykładzie występują dwie operacje modułu, z których każda zwraca identyczną wartość:
int x = 11% 4 // pozostała część 11/4 = 3 int i = 13% 5 // pozostała część 13/5 = 3
Użyj modułu, aby określić liczby parzyste i nieparzyste
Ponieważ operacja modulo określa pozostałą część podziału między dwiema liczbami, wydaje się logiczne, że operator modulo służy do wyszukiwania liczb nieparzystych i parzystych. Liczba parzysta, z definicji, jest dowolną liczbą podzielną przez 2. Dlatego liczba zwraca zero po uzyskaniu modułu podziału przez 2. Po prostu liczba "n" jest nawet jeśli "n% 2" jest równa zero. Na przykład ten kod definiuje funkcję, która pobiera liczbę całkowitą i zwraca liczbę całkowitą (0 lub 1) w zależności od tego, czy liczba jest równa czy nie.
int isEven (int x) {return (x% 2); }
Funkcja generowania liczb parzystych i nieparzystych
Korzystając z działania modułu, wydaje się proste utworzenie funkcji generującej liczby nieparzyste lub parzyste. Programista może uznać za przydatne wygenerowanie listy liczb parzystych i nieparzystych. W takim przypadku prosta pętla for i rozmiar pola wprowadzony przez użytkownika jest jedyną rzeczą, której potrzebujesz do utworzenia zbioru liczb:
void evenGenerate (rozmiar int) {int i = 0;
dla (i; i <= size; i ++) {if (i% 2 == 0) cout << i << endl; }}
Generuje to liczby parzyste. Programista może zmienić instrukcję "if", aby powiedzieć "if (i% 2 == 1)", aby wygenerować liczby nieparzyste.
Alternatywy do modułu
Sam moduł nie jest prostą operacją, ale zawiera trzy matematyczne obliczenia w jednym. Dzieje się tak dlatego, że operacja "x% y" jest faktycznie równa "x - y * (x / y)". Wiedząc o tym, programista może podzielić operację lub znaleźć sposoby włączenia części operacji do innych operacji w celu optymalizacji czasu. Ale do użytku i ogólnej łatwości kodowania operator modułu działa dobrze. Poniższe przykłady ilustrują dwie metody w C:
int x = 10% 2; // 10/2 = 5 bez reszty int y = 10 - (2 * (10/2)); // W kolejności operacyjnej 10/2 = 5; 5 * 2 = 10; 10 - 10 = 0 odpoczynku