C语言理论速记
ClearSky Drizzle Lv4

变量定义

1
2
3
// e 或 E之前必须有数字,之后必须位整型
double a = 1.5e11;
double b = 1.5E11;

转义字符

1
2
'\x01' // \x 之后只能跟随1~2位十六进制数
'\0' // 表示字符串结束

格式化字符

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
%d — 十进制整数(有符号)
%i — 十进制整数(有符号)
%f - 浮点数默认格式,输出时小数点后有6位小数。
%e — 指数表示(小写)
%E — 指数表示(大写)
%g — 自动选择 %f 或 %e(小写)
%G — 自动选择 %f 或 %E(大写)
%c — 字符
%s — 字符串
%p — 指针地址
%x — 十六进制整数(小写)
%X — 十六进制整数(大写)
%o — 八进制整数
%% — 输出百分号字符 %
%u — 无符号十进制整数
%lu — 无符号长整数(unsigned long)
%llu — 无符号长长整数(unsigned long long)
%ld — 长整数(long int)
%lld — 长长整数(long long int)
%zu — 无符号大小类型(size_t)
%h — 短整数(short 或 unsigned short)
%hh — 非常短整数(signed char 或 unsigned char)
%L — 长双精度浮点数(long double)
%n — 输出到指定变量中已打印字符的个数
%.*f - 指定小数点后的位数,* 可以是任意整数。
%.*e 或 %.*E:指定科学计数法中小数点后的位数。
%.*g 或 %.*G:指定自动选择格式中小数点后的位数。
%f 也可以与宽度和精度一起使用,例如 %10.2f 表示总共占10个字符宽度,小数点后保留2位小数。

负数取模

参考链接

1
2
3
4
5
a = nq + r  |r| < |a|
假设 q 是 a、b 相除得到的商(quotient),r 是相应的余数(remainder)
我们知道商 q = a/n,从而得出
r = a - (a/n) * n
而 (a/n) 这个结果取决于上面几种方式用哪个

示列:

1
2
3
4
5
-7 % 3 = -1
7 % (-3) = 1
// 下面是推倒过程
-7 % 3 = -7 - trunc(-7/3) * 3 = -7 - (-2) * 3 = -7 + 6 = -1
7 % (-3) = 7 - trunc(7 / (-3)) * (-3) = 7 - (-2) * (-3) = 7 - 6 = 1

运算符

C语言中的运算符优先级决定了表达式中运算的顺序。以下是C语言中运算符的优先级列表,从最高到最低:

! > 算术运算符 > 关系运算符 > && > || > 赋值运算符

后缀运算符、一元运算符、乘除和取模、加减、位移、关系、相等性、位运算、逻辑运算、条件运算符、赋值运算符、逗号运算符。

  1. 后缀运算符

    • () 函数调用
    • [] 数组下标
    • -> 指向结构体成员
    • . 结构体成员访问
    • ++ 后置增量
    • -- 后置减量
  2. 一元运算符

    • ++ 前置增量
    • -- 前置减量
    • + 正号
    • - 负号
    • ! 逻辑非
    • ~ 按位取反
    • * 指针解引用
    • & 取地址
    • sizeof 计算大小
    • typeid 类型识别(C++特有)
    • cast 强制类型转换(C++特有)
  3. 乘法和除法

    • * 乘法
    • / 除法
    • % 取模(求余)
  4. 加法和减法

    • + 加法
    • - 减法
  5. 位移运算符

    • << 左移
    • >> 右移
  6. 关系运算符

    • < 小于
    • > 大于
    • <= 小于等于
    • >= 大于等于
  7. 相等性运算符

    • == 等于
    • != 不等于
  8. 位运算符

    • & 按位与
    • ^ 按位异或
    • | 按位或
  9. 逻辑运算符

    • && 逻辑与
    • || 逻辑或
  10. 条件运算符(三元运算符)

    • ? : 条件表达式
  11. 赋值运算符

    • =
    • +=
    • -=
    • *=
    • /=
    • %=
    • <<=
    • >>=
    • &=
    • ^=
    • |=
  12. 逗号运算符

    • , 逗号分隔表达式
 Comments
Comment plugin failed to load
Loading comment plugin
Powered by Hexo & Theme Keep
This site is deployed on
Unique Visitor Page View