C - 數字處理




運算符


    +    //
    -     //
    /     //
    *     //
    %     // 取餘數(比如:13 % 10 會回傳 3
    <<     // 向左位移( i << 1 相當於 i * 2
    >>     // 向右位移( i >> 1 相當於 i / 2
    |    // 布林的or
    &     // 布林的and
    ^    // 布林的xor
    ~    // 布林的反向



簡寫


    +=    // i = i + 2,可改成 i += 2
    -=     // i = i - 2,可改成 i -= 2
    ++    // i += 1,可再改成 i++(如在判斷式內:i++為先判斷再加,++i為先加再判斷)
    --      // i -= 1,可再改成 i--(如在判斷式內:i--為先判斷再減,--i為先減再判斷)
    *=     // i = i * 2,可改成 i *= 2
    /=     // i = i / 2,可改成 i /= 2
    <<= // i = i << 2,可改成 i <<= 2
    >>= // i = i >> 2,可改成 i >>= 2
    |=     // i = i | 0x2,可改成 i |= 0x2
    &=    // i = i & 0x2,可改成 i &= 0x2
    ^=    // i = i ^ 0x2,可改成 i &= 2



字串轉換成數值


    int i_val = atoi(buf); // 字串換成整數
    float f_val = atof(buf); // 字串換成浮點數
    unsigned long ul_val = strtoull(buf, NULL, 10); // 字串換成無號數長整數
    unsigned long long ull_val = strtoull(buf, NULL, 10); // 字串換成無號數長整數

strtoull與strtoul 最後的參數可填入:2、8、10、16 (代表字串為X進制)


Math (編譯時需加上 -lm)


    // 一般
    double fabs(double x) // 絕對值
    double pow(double x, double y) // xy次方
    double sqrt(double x) // 開根號
    double fmax(double x, double y); // 取大值
    double fmin(double x, double y); // 取小值
    double round(double); // 四捨五入
    double ceil(double x) // 無條件進位
    double floor(double); // 無條件捨去
    double fmod(double x, double y) // 取餘數
    double modf(double x, double *iptr) // 分解整數與小數 (a:整數, 回傳:小數)

    // 三角函數
    double sin(double)
    double cos(double)
    double tan(double)
    double asin(double)
    double acos(double)
    double atan(double)
    double atan2(double y, double x)
    double sinh(double)
    double cosh(double)
    double tanh(double)

    // 其他
    double exp(double x) // 指數 ex次方
    double exp2(double x) //
    double expm1(double) //
    double ldexp(double x, int n) // 返回:x 乘以 2n次方
    double frexp(double x, int *n) // 分解 [x = a 乘以 2n次方] (返回:n, 回傳:a)
    double log(double x) // 自然對數 (基底為e)
    double log10(double x) // 10為基底的對數
    double log1p(double x) //
    double log2(double x) //
    double logb(double x) //
    double cbrt(double x) // 回傳參數的立方根

man page - https://man7.org/linux/man-pages/man0/math.h.0p.html



沒有留言:

張貼留言