運算符
+ // 加
- // 減
/ // 乘
* // 除
% // 取餘數(比如: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
字串轉換成數值
strtoull與strtoul 最後的參數可填入:2、8、10、16 (代表字串為X進制)
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); // 字串換成無號數長整數
Math (編譯時需加上 -lm)
// 一般
double fabs(double x) // 絕對值
double pow(double x, double y) // x的y次方
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) // 指數 e的x次方
double exp2(double x) //
double expm1(double) //
double ldexp(double x, int n) // 返回:x 乘以 2的n次方
double frexp(double x, int *n) // 分解 [x = a 乘以 2的n次方] (返回: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
沒有留言:
張貼留言