Modulo Opérateur en C

Jinku Hu 12 octobre 2023
  1. Utiliser l’opérateur modulo % pour calculer le reste dans la division en C
  2. Utiliser l’opérateur % Modulo pour implémenter la fonction de vérification des années bissextiles en C
  3. Utiliser l’opérateur modulo % pour générer des nombres aléatoires dans l’intervalle de nombres entiers donné en C
Modulo Opérateur en C

Cet article présente plusieurs méthodes d’utilisation de l’opérateur modulo en C.

Utiliser l’opérateur modulo % pour calculer le reste dans la division en C

Modulo % est l’un des opérateurs arithmétiques binaires du langage C. Il produit le reste après la division de deux nombres donnés. L’opérateur Modulo ne peut pas être appliqué aux nombres à virgule flottante comme float ou double. Dans l’exemple de code suivant, nous présentons le cas le plus simple possible pour l’utilisation de l’opérateur %, en imprimant les résultats module 9 du tableau int donné.

#include <stdio.h>
#include <stdlib.h>

int main(void) {
  int arr[8] = {10, 24, 17, 35, 65, 89, 55, 77};

  for (int i = 0; i < 8; ++i) {
    printf("%d/%d yields the remainder of - %d\n", arr[i], 9, arr[i] % 9);
  }

  exit(EXIT_SUCCESS);
}

Production :

10/9 yields the remainder of - 1
24/9 yields the remainder of - 6
17/9 yields the remainder of - 8
35/9 yields the remainder of - 8
65/9 yields the remainder of - 2
89/9 yields the remainder of - 8
55/9 yields the remainder of - 1
77/9 yields the remainder of - 5

Utiliser l’opérateur % Modulo pour implémenter la fonction de vérification des années bissextiles en C

On peut aussi utiliser l’opérateur % pour mettre en œuvre des fonctions plus complexes. L’exemple de code suivant montre une fonction booléenne “année bissextile” qui vérifie si l’année donnée est bissextile ou non. Notez qu’une année est considérée comme une année bissextile si sa valeur est divisible par 4 mais pas par 100. De plus, si la valeur de l’année est divisible par 400, il s’agit d’une année bissextile.

#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>

bool isLeapYear(int year) {
  if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
    return true;
  else
    return false;
}

int main(void) {
  uint year = 2021;
  isLeapYear(year) ? printf("%d is leap\n", year)
                   : printf("%d is not leap\n", year);

  exit(EXIT_SUCCESS);
}

Production :

2021 is not leap

Utiliser l’opérateur modulo % pour générer des nombres aléatoires dans l’intervalle de nombres entiers donné en C

Une autre caractéristique utile de l’opérateur modulo est de limiter le plancher supérieur des nombres pendant le processus de génération des nombres aléatoires. À savoir, supposons que nous ayons une fonction qui génère l’entier aléatoire. Dans ce cas, nous pouvons prendre le reste de la division entre le nombre retourné et la valeur dont nous avons besoin pour être le maximum (définie comme macro MAX dans l’exemple suivant). Notez que l’utilisation des fonctions srand et rand pour la génération de nombres aléatoires n’est pas une méthode robuste, et les applications nécessitant des nombres aléatoires de qualité devraient employer d’autres moyens.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define COUNT 10
#define MAX 100

int main(void) {
  srand(time(NULL));
  for (int i = 0; i < COUNT; i++) {
    printf("%d, ", rand() % MAX);
  }
  printf("\b\b  \n");

  exit(EXIT_SUCCESS);
}

Production :

3, 76, 74, 93, 51, 65, 76, 31, 61, 97  
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - C Math