【C】“/”与“%”基本用法

引言:

以前在刚刚学习“%”运算的时候总会不清楚它是怎么使用的,甚至和“/”经常混淆,后来在刷题的过程中才慢慢感受到“%”的好处,因此结合网上大家写的总结,自己也写了一些简单的总结,若有错误,欢迎多多指教与讨论!

关于“/”的“%”的总结

  1. 除法运算符“/”。二元运算符,具有左结合性。参与运算的量均为整型时,结果为整型,舍去小数。如果运算量中有一个为实型,结果为双精度实型。
  2. 求余运算符“%”,二元运算符,具有左结合性。参与运算的量均为整型。
    求余运算的结果等于两个数相除后的余数。
    “%”取模运算符还有一些小的应用,例如:
    ①当你想要通过rand()获得随机数时,rand()%100;产生0-99的随机数。
    假如要产生16-59之间的数,可以这样写:rand()%44+16(这里44由59-16+1得到)。
    rand()%44 即可获得0-43的随机数,再加上16即可得到16-59的随机数了;
    ②除了第一点以外,“%”运算还通常用于N进制的转换。
    例如:
    如果是二进制转换,那么就可以通过/与%的结合使用则可以得到转换之后的二进制数了(其实就是短除法)
    当原数被除至剩余0时,它的上一次模数就是最高位进制数。
    30(10)->11110(2)
  3. /与%的结合使用通常都可用于获得最低位数又或者获得所需的某位数。
    例如:
    “/”通常可以去掉尾数,而“%”通常都用于获得尾数。

代码演示如下:

#include<stdio.h>

int main() {
    int x;
    double y;
    int result;

    int dx;
    double dy;
    double dresult;

    /*
        通过+0.5进行整数的四舍五入,否则C语言中对于整数则会直接把位数去掉
        例如:
            如果是5/2.0=2.5,如果直接%d输出那么结果是2;
            而如果+0.5/10*10则会得到结果3,既进行了四舍五入的操作
    */
    x = 28;y = 10.0;
    printf("x = %d,y = %lf\n", x, y);
    result = (double(x / y)+0.5)/10*10;  
    printf("result = %d\n\n", result);


    /*
        对于实数通过.?的输出操作则能实现它们的四舍五入
        例如:
            例子中的30/7本来等于4.258....
            但因为输出时限制了格式.2lf,因此得到结果4.26,既已经进行了四舍五入了
    */
    dx = 30;dy = 7;
    printf("dx = %d,dy = %.1lf\n", dx, dy);
    dresult = dx / dy;
    printf("dresult = %.2lf\n\n", dresult);

    //进制转换
    int tx = 30;
    int mod = 0, temp = 0;
    int binary[10] = { 0 };

    printf("%d(10) -> ", tx);
    while (tx) {
        binary[temp++] = tx % 2;
        tx /= 2;
    }
    temp--;

    for (int i = temp;i >= 0;i--)
        printf("%d", binary[i]);
    printf("(2)");

    return 0;
}

输出结果如下:
x = 28,y = 10.000000
result = 3

dx = 30,dy = 7.0
dresult = 4.29

30(10) -> 11110(2)

  • 26
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值