1 数据类型
- 基本类型
- 整型:短整型,基本整型,长整型
- 字符型
- 实型(浮点型):单精度型,双精度型
- 枚举类型
- 构造类型:是使用基本类型的数据 或者使用已经构造好的数据 类型,进行添加、设计构造出新的数据类型,使其设计的新构造类型满足待解决问题所需要的数据类型。
- 数组类型
- 结构体类型
- 共用体类型
- 指针类型
- 空类型:关键字是void。
2 常量和变量
2.1 常量
2.1.1 数值型常量 - 整型常量
- 十进制整数:没有前缀。无符号数范围为0~65535;有符号数范围为-32768~+32768。
- 八进制整数:以0开头。无符号数范围为0~0177777。
- 十六进制整数:以0x或0X开头。无符号数范围为0x0~0xFFFF。
长整型数是用后缀L或l来表示,如:123L,789l,042L,0377777L,0x1al,0x2FFFFL。
整型数据在内存中以二进制形式存放,数值以补码表示。正数的补码与它的原码一致,负数的补码是它的绝对值的二进制形式,按位取反再加1。
如:-11
绝对值为0000000000001011,按位取反为1111111111110100,再加1 为1111111111110101,即1111111111110101是-11在内存中存储的情况。
注:对于有符号整数,它在内存存放的最左边一位表示符号,0为正,1为负。
2.1.2 数值型常量 - 实型常量(浮点型常量)
十进制的有符号实数,由整数和小数组成。当十进制数加上e或E以及阶码组成时,其为指数形式,如234e2或234E2,表示234x10^2。
2.1.3 字符型常量
字符常量
- 一般字符:由单引号括起的单个字符。
- 转义字符:
转义字符 | 意 思 |
---|---|
\n | 回车换行 |
\f | 横向跳到下一制表位置 |
\v | 竖向跳格 |
\b | 退格 |
\r | 回车 |
\f | 走纸换页 |
\\ | 反斜线符 |
\' | 单引号符 |
\" | 双引号符 |
\a | 鸣铃 |
\ddd | 1~3位八进制数所代表的字符 |
\xhh | 1~2位十六进制数所代表的字符 |
字符串常量
由双引号括起的若干个字符,如"Hello, world!"。
注:C语言中存储字符串常量时,系统会自动在字符串末尾加一个\0作为字符串结束的标志。字符常量则没有,存储的是字符的ASCII码值。
2.1.4 符号常量
在C语言中,瘵程序 中的常量定义为一个标识符,这个常量就叫做符号常量。在使用符号常量前,首先需要定义,通常使用大写字母表示。
2.2 变量
关键字 | 类型名称 | 内存大小 |
---|---|---|
char | 字符型 | 1个字节(8位) |
int | 整型 | 4个字节(32位) |
short | 短整型 | 2个字节(16位) |
long | 长整型 | 4个字节(32位) |
long long | 更长的长整型 | 8个字节(64位) |
float | 单精度 | 4个字节(32位) |
double | 双精度 | 8个字节(64位) |
long double | 长双精度 | 8个字节(64位) |
字符型数据可以字符形式输出,也可以整数形式输出。
例如:
#include <stdio.h>
main()
{
char c1, c2;
c1 = 'a';
c2 = c1 + 10;
printf("c1: %d, %c\n", c1, c1);
printf("c2: %d, %c\n", c2, c2);
}
输出为
c1: 97, a
c2: 107, k
3 运算符和表达式
运算符、变量和函数一起组成表达式。
运算符 | 意思 | 运算方向 | 运算对象个数 | 优先级 |
---|---|---|---|---|
() | 圆括号(函数等) | 左 -> 右 | 1 | |
[] | 数组、下标 | |||
-> | 指向结构体成员 | |||
. | 结构成员访问 | |||
! | 逻辑非。 0取非为1,其它任意非0数值取非都为0。 | 左 <- 右 | 单目 | 2 |
~ | 按位取反 | |||
++ | 自增。 变量在前:先使用再自增; 变量在后:先自增再使用; | |||
-- | 自减 变量在前:先使用再自减; 变量在后:先自减再使用; | |||
+ | 正号 | |||
- | 负号 | |||
* | 指针运算符 | |||
& | 取地址 | |||
(类型) | 强制类型转换。 如: char a; float b=10000; a=(char)b; /*强制转换赋值*/ | |||
sizeof | 求内存大小。 使用方式: a) sizeof(变量名)。 b) sizeof(数据类型名)。 c) sizeof 变量名。 | |||
* | 乘 | 左 -> 右 | 双目 | 3 |
/ | 除 | |||
% | 取余(求模)。 参与运算的量需均为整数。 | |||
+ | 加 | 左 -> 右 | 双目 | 4 |
- | 减 | |||
<< | 左移 | 左 -> 右 | 双目 | 5 |
>> | 右移 | |||
< | 小于 | 左 -> 右 | 双目 | 6 |
<= | 小于等于 | |||
>= | 大于等于 | |||
> | 大于 | |||
== | 等于 | 左 -> 右 | 双目 | 7 |
!= | 不等于 | |||
& | 按位与。 只有两个数的二进制同时为1,结果才为1,否则为0。 | 左 -> 右 | 双目 | 8 |
^ | 按位异或。 当两个数的二进制相同时,结果为0,否则为1。 | 左 -> 右 | 双目 | 9 |
| | 按位或。 只有两个数的二进制同时为0,结果才为0,否则为1。 | 左 -> 右 | 双目 | 10 |
&& | 逻辑与。 只有都为真(1)时,结果才为1,否则结果为0 | 左 -> 右 | 双目 | 11 |
|| | 逻辑或。 只要有一个为真(1),结果就为1 | 左 -> 右 | 双目 | 12 |
?: | 条件 表达式1 ? 表达式2 : 表达式3 表达式1为真,则采用表达式2,否则采用表达式3. --> 前真后假 | 左 <- 右 | 三目 | 13 |
=、+=、-=、*=、/=、&=、^=、|=、<<=、>>= | 各种赋值。先运算再赋值。 | 左 <- 右 | 双目 | 14 |
, | 逗号(顺序求值) | 左 -> 右 | 15 |