C/C++ 中的模运算符

17 Mar 2025 | 4 分钟阅读

在了解模运算符之前,我们需要先了解运算符这个术语。在编程中,运算符符号告诉编译器根据传递的操作对给定的数字执行特定的运算。

它用于对数字执行不同的运算(+、-、*、/)。通过在程序中使用各种运算符,有助于增强程序员的逻辑和数学能力。除了这四种基本运算符外,还有一些其他运算符,例如模运算符 (%)、作用域解析运算符 (::) 等。

在本节中,我们将重点讨论模运算符

Modulus Operator in C/C++

C 和 C++ 中的模运算符是什么?

模运算符是各种编程语言中使用的一个符号。它由百分号(%)表示。它是一种算术运算符,用于求余数。在某些情况下,余数可能为 0,这意味着该数可以被除数完全整除。

语法

在上面的语法中,a 和 b 是两个整数,而 % (百分号) 是一个模运算符,它将 a 除以 b 并返回余数。

模运算符的可能返回值

以下是当第一个数除以第二个数时仅返回余数值的几种可能性。

  1. 如果变量 a 能被第二个数 (b) 完全整除,则返回零 (0),或者说余数为 0。
  2. 如果变量 a 不能被第二个数 (b) 完全整除,则返回一个范围在 [1, a - 1] 内的数值。或者我们可以说它返回一个非零整数值的余数。
  3. 如果第一个数 (a) 非零而第二个数是 0,它将在编译时产生错误。

模运算符在 C/C++ 中是如何工作的?

模运算符与最终用户接收的两个操作数一起工作。之后,它将第一个数除以第二个数并确定余数。让我们通过以下示例来理解模运算符的功能。

示例:当我们对 8 和 5 执行模运算,即 8 % 5,它返回余数 3,因为当 8 除以 5 时,商为 1,余数为 3。

同样,7 % 2 返回 1 作为余数,因为当 7 除以 2 时,商为 3,余数为 1。

示例 1:编写一个程序以在 C 语言中实现模运算符。

Mode.c

输出

Modulus returns a remainder: 1
 Modulus returns a remainder: 2
 Modulus returns a remainder: 0

注意:当我们用一个浮点数除以另一个数时,它会返回编译时错误,提示操作数无效。因此,我们可以说它不适用于浮点数。

在 C++ 中实现模运算符的程序。

Mode3.cpp

输出

Modulus returns a remainder: 1
 Modulus returns a remainder: 2
 Modulus returns a remainder: 0

C++ 中的模运算符

Mode4.cpp

输出

Modulus returns a remainder: -1
 Modulus returns a remainder: 2
 Modulus returns a remainder: -1

模运算符的链式使用

我们可以使用模运算符的链式使用,在单个语句中对两个以上的操作数执行模除法。以下是链式模运算符的伪代码,如下所示。

让我们来看一个使用多于两个操作数的链式模运算符的程序。

Mode5.cpp

输出

Modulus is: 2