【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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章