英文字母:
字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE
中文汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE
常量:
在程序运行过程中,其数值不会发生改变的数据
- 整型常量
二进制:0b00001111
八进制:077
十进制:20
十六进制:0xff - 浮点常量: 0.635
- 字符常量:‘a’ ‘b’
- 字符串常量:“abcdefg” 字符串以‘\0’作为结束标记
- 指数常量:
1000000000 10^9 10e+9
0.00000000001 10^-11 10e-11 - 标识常量:
宏 – 替换工作 #define [宏名] [常量(常量表达式)]
宏函数 例如:#define ADD(x,y,z) (((x) + (y)) * (z)) 注意:在定义宏时,需要给每个变量加上括号,并且给整个表达式也加上括号
变量:
- 相当于创建了一个对象,并且为这个对象分配了一块内存空间,这个空间的名字称为变量名
- 变量是程序中占据空间大小的抽象,占据的大小是由数据结构决定的
- 变量在内存空间的首地址,称为变量的地址
- 内存的最小单位—字节
- 定义变量:存储类型 数据类型 变量名;
例如: int a; //定义变量,没有初始化
int b = 10; //定义变量并初始化值 - 变量的命名规范
1)变量名不能是C的关键字
2)不能用数字开头,但是可以用字母或_开头,不能重复的定义 3)多个单词之间不能空格分割 int this today //错误定义方式,不允许出现空格
4)区分大小写 int a; int A; 两个变量
5)希望能够见名知意 - 存储类型: .
1).auto:默认的储存类型,是一个局部变量, 只能够在一个范围内使用,默认随机值,由于是虚拟机,所以初始随机值不准确;范围:一个语句段内使用{}
2).register:寄存器变量
定义变量的时候放到cpu寄存器中,可以加快程序的运行速度,但是数量少,容量小,如果申请不到,就会同auto。
2.1).必须是cpu寄存器支持的类型
2.2).不能对register变量"&"取地址操作
2.3).静态变量不能定义为register类型
3).static:静态储存变量
3.1).static修饰变量只会被初始化一次,被称之为静态变量 3.2).修饰局部变量如果没有被初始化,其值为随机值
3.3).修饰全局变量如果没有被初始化,其值为0
4).extern:外部参照引用类型
4.1).只能修饰全局变量
4.2).全局变量必须被定义过
4.3).多个文件同时编译
auto 存储在栈区.
-
生命周期和作用域
局部变量
生命周期:从定义开始,到模块的结束
作用域:该模块内全局变量
生命周期:从定义开始,到整个程序的结束
作用域:整个程序static修饰的局部变量
生命周期:从定义的开始,到整个程序的结束
作用域:该模块内static修饰的全局变量
生命周期:从定义的开始,到整个程序的结束
作用域:该文件内 -
类型转换
9.1 、隐式类型转换
9.1.1.低字节向高字节转换
9.1.2.有符号数向无符号数转换
9.1.3.float势必向double转换,short、char势必向int转换9.2、强制类型转换:采用某种方式将某种数据类型强制转换成指定的数据类型。包括显式的数据类型转换,和隐式的数据类型转换。 9.2.1.强制类型转换符后面的表达式如存在复杂运算,就一定要用小括号括起来
9.2.2.强制类型转换符是一种不安全的转换,一般都是将高级类型转换成低级类型,要丢失数据的精度
9.2.3.强制类型转换并不改变表达式中变量的数据类型和其值。