1,变量名由字母、数字、下划线组成,不能以数字开头,下划线视为字母。系统变量一般以下划线开头。变量名不能是关键字,关键字有: if、else、switch、float、int 等
2,四种基本的数据类型:char、int、float、double
int可以使用qulifer short、long 来修饰。short int 表示至少16bit。int 表示32bit 或 16bit。long int表示至少32bit。short int 的位数不能比int的位数大,int位数不能比long int 位数大。
还可以使用qulifer unsinged 和 singed 来修饰 char
unsigned char范围为[0,255],signed char范围为[-128,127]。
3,常量表示
数值常量可以带后缀。后缀有: L表示long,l 也表示long ,U或者小写的 u 表示unsigned。
字符常量,字符常量都有一个 numberic value。它对应的numberic value由机器的 character set决定。比如 ASCii character set 中 字符 '0' 表示的数值是48。
此外,一个只有 byte-sized bit pattern 可以由八进制或者十六进制的表示,有些特殊字符,比如TAB字符,它不好直接表示(不像 a b c d e ....),它在ASCII码中的数值为11。因此,可以表示为:
#define VTAB '013' 这是八进制的表示方式
#define VTAB '0xb' 这是十六进制表示方式
也可以采用转义字符的表示形式,比如TAB字符的转义字符的表示形式为: char c = '\t';
还有一个值得一提的字符常量 '\0',它的ASCII的 numberic value为0。它是 null character。
字符串常量:事实上,字符串常量底层是一个字符数组。该字符数组以 null character '\0' 来标记字符串的末尾。如,字符串 "abc"它在底层存储格式是 'a' 'b' 'c' '\0'
明白了字符串常量和字符常量,就很容易区分 'x' 与 "x" 的不同了。前者是一个int 型的整数,后者是char类型的数组。哈哈。。。。
4,变量的声明与初始化
变量声明的方式:
方式1, int a,b,c;
方式2, int a; int b; int c;
方式3,int a = 1; int b = 2; int c = 3;
变量的初始化:
变量有 automatic variable, static variable, external variable
对于automatic变量而言,在使用之前要初始化,不然它就是一个garbage value,或者说是一个未定义的值。
external variable 和 static variable 默认的初始化值为0
qualifier const 可以用来修饰变量,它表示该变量的值不会再改变。
如 const char msg[] = "warning:"; 表示数组的元素不再改变。
const 还可以修饰数组参数,如 int strlen(const char[]); 表示strlen函数不会改变char[]。
5,类型转换--char 转换成 int 时的问题
由于 char 只有一个字节,当某个 char的最高位为1时,当把 char 转换成 int 时,int 会是一个负数吗?
这种情况视机器而定。由于 int 有两个字节,有些机器,会在把高位的那个字节全部补0,这样得到的是一个正数。而有些机器则是高位补1,则转换成负数。