《The C Programming Language--2》Types, Operators, and Expressions

时间:2022-02-18 19:15:58

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,则转换成负数。