文栏 - 信息技术 - C语言相关 - 浏览文章 - 模除运算符
模除运算符
发布时间: 2008/10/29 1:44:17 作者: antigloss 出处: http://stdcpp.cn/html/1/2/0603/123.htm

     %模除运算符Modulus Operator),用于求余数。% 的优先级与 * 及 / 相同,其结合律也是从左到右。% 只可用于对整数进行模除,不可用于浮点数。例如:

          15 % 2       // 正确。余数为 1
          15.2 % 3     // 错误!

    如果 % 两边的操作数都为正数,则结果为正数或零;如果 % 两边的操作数都是负数,则结果为负数或零。C99 以前,并没有规定如果操作数中有一方为负数,模除的结果会是什么。C99 规定,如果 % 左边的操作数是正数,则模除的结果为正数或零;如果 % 左边的操作数是负数,则模除的结果为负数或零。例如:

          15 % 2       // 余 1
          15 % -2      // 余 1
          -15 % 2      // 余 -1
          -15 % -2     // 余 -1

标准规定,如果 a 和 b 都是整数,则 a % b 可以用公式 a - (a / b) * b 算出。例如:

          -15 % 2 == -15 - (-15 / 2) * 2 == -15 - (-7) * 2 == -1

最后,我们看一个小程序。

        /* months_to_year.c -- 将用户输入的月数转换成年数和月数 */

        #include <stdio.h>
       
        int main(void)
        {
            int months, years, months_left, months_per_year = 12;

            printf("Enter the number of months: ");
            scanf("%d", &months);

            years = months / months_per_year;         /* 算出年数 */
            months_left = months % months_per_year;   /* 算出剩余的月数 */

            printf("%d months is %d years, %d months.\n", months, years, months_left);

            return 0;
        }

参考资料

C Primer 5th Edition
C99 标准

所属分类: 信息技术 - C语言相关   所属专题: 他山之石
共有 6096 人次浏览

评论作者:
电子邮件:
评论内容:
投票评价:
验 证 码:
图片包含4个随机字符,点击刷新
请输入上面图片中的随机字符