C的关键字
- 数据类型关键字:char、short、int、long、float、double、unsigned、signed、struct、union、enum、void
- 控制语句关键字:if、else、switch、case、default、for、do、while、break、continue、goto、return
- 存储类关键字:auto、extern、register、static、const
- 其他关键字:sizeof、typedef、volatile
数据类型
- 基本类型:int、short、long、char、float、double
- 构造类型:数组、结构体(struct)、共用体(union)、枚举(enum)
- 指针类型:char *、int *、int **等
常量与变量
- 常量:在程序运行过程中,其值不能被改变的量。
整型常量:0、-485、147
实型常量:3.14、0.256、-5.369
字符型常量:'q'、'd'、'2'
字符串常量:"abc"、"12345"、"a"
- 变量:在程序运行过程中,其值可以改变
命名规则:变量名只能由字母、数字、下划线组成;第一个字符必须为字母或下划线。
特点:变量在编译时为其分配相应的内存地址,可以通过名字和地址访问相应空间。
- 整型数据
整型常量:
十进制:以数字1-9开头,如:781,2563
八进制:以数字0开头,如:0123
十六进制:以0X开头,如:0x2d
32位处理器下整型变量所占字节数:
有/无符号短整型(un/signed)short (int):2字节
有/无符号基本整型(un/signed)int:4字节
有/无符号长整型(un/signed)long (int):4字节
- 实型数据
实型常量:实数或浮点数,不以f结尾的常量是double类型的,以f结尾的常量(如:3.14f)是float类型的。
实型变量:有单精度(float)和双精度(double)
float型:占4字节,7位有效数字
double型:占8字节,15~16位有效数字
- 字符数据
字符常量:用单引号括起来,如:'a'、'b'。
转义字符:以反斜杠“\”开头,后跟一个或几个字符,如:'\n','\t'(占一个字节)。
字符变量:用char定义,每个字符变量被分配一个字节的内存空间,字符值以ASCII码的形式存放在变量的内存单元中。如:a = 'x';a变量中存放的是字符'x'的ASCII码值120。
- 字符串常量:由双引号引起来的字符序列,如:"china"。
字符常量和字符串常量的不同:每个字符串的结尾,编译器会自动的添加一个结束标志位'\0'。
- typedef 类型重定义:给已有的类型重新起个名字。
格式化输出字符
%d:十进制有符号整数 %u:十进制无符号整数
%x:以十六进制表示的整数 %0:以8进制表示的整数
%f:float型浮点数 %lf:double型浮点数
%e:指数形式的浮点数 %p:指针的值
%s:字符串 %c:单个字符
特殊应用:
%3d:右对齐3位。
%03d:右对齐3位,不够补0。
%-3d:左对齐3位。
%5.2f:右对齐5位数长(小数点也算一位),小数点后保留两位小数。
数据的混合运算
- 自动转换:遵循一定的规则,由编译系统自动完成。
自动转换的原则:占用内存字节数少的类型向占用内存字节数多的类型转换。
转换方向:
- 强制类型转换:把表达式的运算结果强制转换成所需的数据类型,类型说明符必须加括号。
格式:(类型说明符)(表达式)
例如:(float)a; //把a的值转化为实型
(int)(x+y); //把x+y的结果值转换为整型
无论是自动转换还是强制类型转换,都只是对变量的数据长度进行的临时性转换,不改变数据定义的类型。
运算符
- 自增自减运算符:使变量的值增1或减1。
++i,--i:先加/减,后使用。
如:i = 3;
j = ++i; //i的值先加1变为4,再赋给j,此时i、j的值均变为4
i++,i--:先使用,后加/减。
如:i = 3;
j = i++; //先将i的值赋给j,j的值为3,然后i再加1变为4
- 移位运算
左移<<:将一个数的二进制位左移,高位丢弃,低位补0。
算数右移>>:有符号数,如果为正数,则左边移入0,右边丢弃;如果为负数,左边移入1,右边丢弃。
逻辑右移>>:无论是正数还是负数,左边均移入0,右边丢弃。
- 优先级及结合性表格如下