首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

%模运算符的用法介绍

%模运算符的用法介绍

% 是模除运算符(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.
", Months, Years, Months_left);

            Return 0;

        }
返回列表