C语学习笔记
基本数据类型: 整型 实型(又称浮点型) 字符型 三种
构造类型: 数组类型 结构体类型 检举类型 联合类型
指针类型: 指针是一种特殊的, 同时又是具有重要作用的数据类型, 其值用来表示某个变量在内存中的地址
空类型: 空类型 void用来声明函数的返回值类型为空(既不需要函数的返回值)
类型关键字 | 长度/字节 | 取值范围 | 说明 |
---|---|---|---|
int | 2 | -32 768~32 767 | 有符号的基本整型 |
unsigned | 2 | 0~65 535 | 无符号的基本整型 |
short | 2 | -32 768~32768 | 有符号短整型 |
unsigned short | 2 | 0~65 535 | 无符号短整型 |
long | 4 | -2 147 383 648~2 147 383 648 | 有符号长整型 |
unsigned long | 4 | 0~4 294 967 295 | 无符号长整型 |
float | 4 | -3.4×10³⁸~3.4×10³⁸ | 单精度实型 |
double | 8 | -1.7×10³⁰⁸~1.7×10³⁰⁸ | 双精度实型 |
char | 1 | 0~255 | 字符型 |
十进制整数: 由数字19开头, 其余各位由09组成
八进制整数: 由数字0开头, 其余各位由0~7组成, 在书写时要加前缀 0 (零)
十六进制整数: 由数字 0x 或者 0X 开头, 其余各位由09与字母af (0X 开头为A~F)组成, 在书写时要加前缀 0x 或者 0X
十进制整数: 由数字和小数点组成 (注意必须加小数点)
指数型势: 用带指数记数法来表示 123E2 或 123e2 都代表 123x10²
字符常量: 一对单引号括起来的单个字符 包括字符和字符之间的空格
字符串常量: 一对双引号括起来的字符序列 包括字符(字符串)和字符(字符串)之间的空格
字符串中字符的格式代表字符串的长度 长度为0的字符串(即一个字符都没有的字符串)称作: 空串
C语言规定: 在储存字符串常量时, 由系统在字符串末尾自动添加一个 \0 作为字符串的结束标志
s | d | q | \0 |
---|
概念: 在程序运行过程中其值可以改变的量称为变量 变量要有变量名, 在内存中占有一定的存储单元, 储存单元存放的是该变量的值 所以每个变量要有 变量名 和 变量值 两要素
变量名: 每个变量都必须有一个变量名, 变量命名遵守标识符命名规则, 变量名应取见名知意
变量值: 在程序运行过程中, 变量值储存在内存中, 不同类型的变量占用的内存单元(字节)数不同 在程序中, 通过变量名来引用变量的值
总体概况: 变量名实际上是一个符合的地址, 在对程序编译连接时由系统给每一个变量名分配一个内存地址 在程序中从变量中取值, 实际上是通过变量名找到相应的内存地址, 从其储存单元中读取数据
整型变量分四类:
基本整型(int)
短整型(short[int])
长整型(long[int])
无符号整型
无符号整型(unsigned[int]) 只能用来储存无符号整数
无符号短整型(unsigned short) 只能用来储存无符号整数
无符号长整型(unsigned long ) 只能用来储存无符号整数
16位操作系统 int占2个字节
32位操作系统 int占4个字节
long型 ≥ int型 ≥ short型
单精度型: 类型关键字为float, 一般占4个字节(32位), 携带7个有效数字
双精度型: 类型关键字为double, 一般占8个字节(32位), 提供15个有效数字
|
运算符号
运算规则, 即所进行的操作
运算的优先级别
运算顺序
运算对象
运算结果
(加法) +
(减法/取负) —
(乘法) *
(除法) /
(求余) %
按运算符优先级高低顺序执行
算数运算符的结合方向: 从左至右
|
前置运算 运算符放在变量之前
后置运算 运算符放在变量之后
&&: 逻辑与(相当于 “并且”)
||: 逻辑或(相当于 “或者”)
!: 逻辑非(相当于 “否定”)
取反
|
|
|
|
|
操作符 | 名称 | 运算规则 | 主要用途 |
---|---|---|---|
& | 按位与 | 对应位为1时才为1, 否则为0 | 将应该数的某(些)位置0, 其余位保留不变 |
∣ | 按位或 | 对应位为0时才为0, 否则为1 | 将应该数的某(些)位置1, 其余位保留不变 |
^ | 按位异或 | 对应位相同为0, 不同时为1 | 使一个数的某(些)位置1, 其余位保留不变 |
~ | 按位取反 | 各位翻转, 即1变0, 0变1 | 间接地构造一个数, 以增强程序的可移植性 |
参与运算时, 操作数都必须首先转换成二进制数, 然后再执行相应的按位运算
按位取反运算符的优先级别与其它单目运算符相同, 运算自右向左进行, 双目&运算符的优先级高于 | 运算符, | 运算符高于 ^ 运算符
位双目运算符的优先级别低于关系运算符, 高于逻辑运算符, 运算自左向右进行
操作符 | 名称 | 运算规则 | 说明 | 实际操作 |
---|---|---|---|---|
<< | 左移 | a << b, a左移b位 | 使操作各位左移, 低位补0, 高位移出舍去 | 操作数乘以2ⁿ (n位左移的位数) |
>> | 右移 | a >> b, a右移b位 | 使操作各位右移, 移出低位舍去 | 操作数除以2ⁿ (n位右移的位数) |
高位: 对无符号和有符号中的正数
补0: 有符号中的负数, 取决于所使用的系统, 补0的称为”逻辑右移”
补1: 称为 “算数右移”
位移 <<, >>同级, 它们的优先级别较高, 仅次于算术双目运算符, 算数方向从左向右
左移运算符: 可以把一个数的各个二进制位全部左移若干位
右移运算符: 移动到右端低位被舍弃, 对无符号数, 高位补0
操作符 | 名称 | 运算规则 | 说明 |
---|---|---|---|
&= | 位与赋值 | a &= b等价于 a = a & b | 操作数均为整数 |
∣= | 位或赋值 | a ∣= b等价于 a = a ∣ b | 操作数均为整数 |
^= | 按位异与赋值 | a ^= b等价于 a = a ^ b | 操作数均为整数 |
<<= | 位左移赋值 | a <<= b等价于 a = a << b | 操作数均为整数 |
>>= | 位右移赋值 | a >>= b等价于 a = a >> b | 操作数均为整数 |
优先级 | 运算符 | 含义 | 运输类型 | 结合性 |
---|---|---|---|---|
1 (最高) | () [] -> . |
园括号, 函数参数列表 数组元素下标 指向元素成员 结构体成员 |
自左至右 | |
2 | ! ~ ++ – (类型) * & sizeof |
逻辑非 按位取反 自增 1 自减 1 求负 强制类型转换 指针运算符 求地址运算符 长度运算符 |
单目运算 | 自右至左 |
3 | * / % |
乘法 除法 求余运算符 |
双目运算 | 自左至右 |
4 | + - |
加法运算符 除法运算符 |
双目运算 | 自左至右 |
5 | << >> % |
左移运算符 右移运算符 |
位移运算 | 自左至右 |
6 | < <= > >= |
小于 小于等于 大于 大于等于 |
关系运算 | 自左至右 |
7 | == != |
等于 不等于运算符 |
关系运算 | 自左至右 |
8 | & | 按位与 | 位运算 | 自左至右 |
9 | ^ | 按位异或 | 位运算 | 自左至右 |
10 | ∣ | 按位或 | 位运算 | 自左至右 |
11 | && | 按位与 | 逻辑运算 | 自左至右 |
12 | ∣∣ | 按位或 | 逻辑运算 | 自左至右 |
13 | ? : | 条件运算 | 三目运算 | 自右至左 |
14 | = += -= *= /= %= >>= <<= &= ^= != |
赋值 运算赋值 |
双目运算 | 自右至左 |
15 | , | 逗号运算 (顺序求值) | 顺序运算 | 自左至右 |
作者: 我叫史迪奇
本文来自于:
https://sdq3.link/C-type-operator-operator.html博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议