C语言模运算符
在理解模数 operator 之前,我们需要了解术语 operator 。在编程中,运算符会告诉编译器根据传递的运算以给定的数字执行特定的运算。
它用于对数字执行不同的运算(+,-,*,/)。通过在程序中使用各种运算符,它有助于增强程序员的逻辑和数学能力。除了这四个基本运算符外,还有其他一些运算符,例如模运算符(%),范围解析运算符(: :)等。
在本节中,我们将重点介绍在模运算符上。
C和C++中的模运算符是什么?
模运算符是在各种编程语言中使用的符号。用百分比符号(%)表示。这是算术运算符中使用的模运算符。它确定余数。在某些情况下,余数可能为0,这意味着该数字可以被除数完全整除。
语法:
在上面的语法中,a和b是两个整数,%(百分号)符号是一个模运算符,它将a除以b并返回余数。
模运算符的返回可能性
以下是将第一个数字除以第二个数字以仅返回余数的可能性。
如果变量a可以被第二个数字(b)完全整除,则它返回零(0),否则余数变为0。
如果变量a不能完全被第二个数字(b)整除,则它将返回范围为[1,a-1]的数值。或者我们可以说它会将余数返回为非零的整数值。
如果第一个数字(a)不为零,第二个数字为0,则在编译时会出错。
模运算符如何在C/C++中工作?
模数运算符可以与最终用户接收到的两个操作数一起使用。之后,它将第一个数字除以第二个数字,然后确定余数。让我们理解下面的示例,该示例说明了模数运算符的功能。
示例: 当我们在8到5之间执行模数运算符时,表示8%为5,它将返回其余3是因为当8除以5时,它返回1的商,而3是余数。
类似地,7%2将返回1的余数,因为当7除以2时,它返回3就是商和1作为余数。
示例1: 编写程序以在C中实现Modulus Operator。
Mode.c
#include<stdio.h>
#include<conio.h>
void main()
{
int a, b;
int res; // store the resultant of modulus expression
a = 5;
b = 2;
res = a % b; // define modulus expression
printf(" Modulus returns a remainder: %d", res);
res = b % a; // define modulus expression
printf(" \n Modulus returns a remainder: %d", res);
a = 10;
b = 5;
res = a % b; // define modulus expression
printf("\n Modulus returns a remainder: %d", res);
getch();
}
输出:
Modulus returns a remainder: 1
Modulus returns a remainder: 2
Modulus returns a remainder: 0
注意: 当我们将浮点数除以另一个数时,它将返回编译的计时器错误作为无效的操作数。因此,可以说它不适用于浮点数。
用于在C++中实现模数运算符的程序。
Mode3.cpp
#include<iostream>
using namespace std;
int main(void)
{
int a, b;
int res; // store the resultant of modulus expression
a = 5;
b = 2;
res = a % b; // modulus expression
cout <<" Modulus returns a remainder: " << res;
res = b % a; // modulus expression
cout <<"\n Modulus returns a remainder: " << res;
a = 10;
b = 5;
res = a % b; // modulus expression
cout <<"\n Modulus returns a remainder: " << res;
return 0;
}
输出:
Modulus returns a remainder: 1
Modulus returns a remainder: 2
Modulus returns a remainder: 0
C++中的模运算符
Mode4.cpp
#include<iostream>
using namespace std;
int main(void)
{
int a, b;
int res; // store the result of modulus expression
a =-5;
b = 2;
res = a % b; // modulus expression
cout <<" Modulus returns a remainder: " << res;
a = 17;
b =-3;
res = a % b; // modulus expression
cout <<"\n Modulus returns a remainder: " << res;
a =-26;
b =-5;
res = a % b; // modulus expression
cout <<"\n Modulus returns a remainder: " << res;
return 0;
}
输出:
Modulus returns a remainder:-1
Modulus returns a remainder: 2
Modulus returns a remainder:-1
模运算符的链
我们可以使用模运算符链在单个语句中对两个以上的操作数执行模除法。以下是模量运算符链接的伪代码,如下所示。
res = operand1 % operand2 % operand3 % .... % operand_n
让我们考虑模运算符的链接程序采用两个以上的操作数。
Mode5.cpp
#include <iostream>
using namespace std;
int main()
{
// Use of modulus operator in C++
int x = 14;
int y = 6;
int z = 3;
int modulo = x % y % z; // x % y returns 2, and 2 % z returns 2
cout << "Modulus is : "<< modulo;
}
输出: