模运算(取余运算)是编程中的基础运算,使用符号 % 表示

模运算(取余运算)是编程中的基础运算,使用符号 % 表示。

基本概念

模运算返回两个数相除后的余数

结果 = 被除数 % 除数

基本示例

10 % 3 = 1    // 10÷3=3余1
15 % 4 = 3    // 15÷4=3余3
20 % 5 = 0    // 20÷5=4余0
7 % 10 = 7    // 7÷10=0余7

在你的代码中的应用

if ( n++ %2 )

这里 n % 2 用来判断n的奇偶性:

  • n % 2 == 1 → n是奇数
  • n % 2 == 0 → n是偶数

执行过程:

n=1: 1%2=1 (真,执行第一个分支)
n=2: 2%2=0 (假,执行第二个分支)  
n=3: 3%2=1 (真,执行第一个分支)
n=4: 4%2=0 (假,执行第二个分支)
n=5: 5%2=1 (真,执行第一个分支)

常见应用场景

1. 判断奇偶数

if (num % 2 == 0) {
    printf("偶数");
} else {
    printf("奇数");
}

2. 循环控制

for (int i = 0; i < 10; i++) {
    if (i % 3 == 0) {
        printf("能被3整除: %d\n", i);
    }
}
// 输出: 0, 3, 6, 9

3. 数组索引循环

int colors[] = {RED, GREEN, BLUE};
int colorIndex = step % 3;  // 始终在0,1,2之间循环

4. 时间计算

int hour = totalMinutes % 60;        // 分钟数
int day = totalHours % 24;           // 小时数
int weekday = totalDays % 7;         // 星期几

5. 哈希表索引

int index = hash(key) % tableSize;   // 确保索引在表范围内

特殊情况

负数的模运算

-7 % 3 = -1   // 在C语言中
-7 % 3 = 2    // 在Python中(不同语言可能不同)

浮点数

// C语言中模运算只能用于整数
fmod(7.5, 2.3)  // 浮点数取余需要使用fmod函数

性能优化技巧

对于2的幂次方,可以用位运算替代:

n % 2  ≡  n & 1     // 判断奇偶
n % 4  ≡  n & 3     // 取模4
n % 8  ≡  n & 7     // 取模8

模运算是控制程序流程、实现周期性行为的重要工具,在你的代码中正是利用了这个特性来实现函数行为的交替变化。

posted @ 2025-08-31 20:57  量子我梦  阅读(154)  评论(0)    收藏  举报