6.2 常量及表达式
的最后一节介绍了数据类型以及五种简单数据类型的数据表示和应用。本节对常量、变量等常用操作,特别是各种常量的表达方法进行了更深入的讲解。
常数是在程序执行过程中保持不变的量。C语言的常量分为四类:普通常量、宏常量、变量常量和枚举常量。普通常量是直接使用的数据,宏常量是指#define定义的常量,变量常量是指const关键字定义的常量,枚举常量是指enum定义的常量。
宏定义格式为:
#定义宏常量名称表达式
宏定义一般不跟分号“;”在表达之后。为了区分宏常量和变量,建议用大写形式表示宏常量。以下是常用的宏常量:
#定义PI 3.14159
#定义真1
#定义FALSE 0
# definitinull0说明用宏常量来表达一些常用的有意义的数字,对读写程序更有帮助。当一个宏被编译成二进制代码时,它将被它所代表的真实数值所代替,然后被编译。当某个常量在程序中多次使用时,比如3.14,用宏常量修改程序更有利。对于宏常量,如果要修改常量的精度,只需要在宏定义时修改一次,比如将3.14改为3.14159。如果你不使用宏常量,你必须修改你使用它们的每个地方。
c语言还提供了一种定义变量常量的方法。只需在变量定义前添加const关键字,同时为变量赋值初始值即可。如果变量没有初始值,定义的常数就没有意义,因为不知道常数代表什么值。例如:
const int days=7;在程序运行期间,变量和宏常量不能赋值。但是宏常量不需要申请内存空间,而变量常量有对应的内存空间,只是内存空间是只读的,不能通过赋值常量名来修改,但是可以通过scanf函数赋值。例如:
天数=30天;(十)
scanf(‘%d ‘,天);(v)对于普通常量,五种简单的数据类型有自己的表示形式。其中,整数常量的表示方法有很多,可以分别用十进制、八进制或十六进制表示。不同的十进制表示由前缀定义。无前缀表示十进制数,数字0是八进制的前缀,0x是十六进制的前缀。例如,八进制的十进制整数65,0101和十六进制的0x41。
如果整数后面没有后缀,则默认为int类型,对于长整型可以跟后缀L(或小写L),对于长整型可以跟后缀ll(或小写LL)。例如,0x41L是长整数,0101LL是长整数。如果要表示数字是无符号的,可以用U作为后缀,例如65U表示是无符号整数。
八进制表示中需要注意的是,每个数字只能是0到7之间的数字,超过7就是非法的八进制数,比如0258就是错误的。十六进制数字只能是0-9和小写A-F或大写A-F,其他符号不允许。例如,0x25B是正确的十六进制数。
Type常量是由单引号分隔的单个符号,也可以是以反斜杠“\”开头的转义符号。常用的符号是数字符号“0”到“9”;常见符号’!’、“@”等等;小写字母“a”到“z”;大写字母’ a ‘到’ z ‘等。
此外,有些符号是不可显示的或特殊用途的控制符号,需要在符号前加“\”进行转义,如:单引号“\”、双引号“\”、反斜杠“\ \”。这些符号看起来像两个符号,但实际上它们是单个字符。
您也可以使用“\”作为前缀,后跟八进制或十六进制数字(对应于十进制0到255之间的值)来表示字符,如果使用十六进制,则使用前缀x。例如,’ \40 ‘,’ \x20 ‘和”表示相同的字符;10101 ‘,’ \x41 ‘和’ a ‘都代表相同的字符。常用转义字符的换行符也有’ \n ‘,与’ \12 ‘相同;\r ‘表示回车,与’ \15 ‘相同;\b ‘退格键,与’ \10 ‘相同;“0”代表空字符,ASCII值为0;“t”称为Tab键,与“\11”相同。
类型A数据存储ASCII值,值范围从0到255。因此,字符类型可以被视为只有8位的最短整数。实际上,字符数据可以分为两类:有符号的和无符号的。当整数值较小时,用char类型存储数据更节省空间。如下定义字符变量:
签名char a;
无符号字符b;a可以保存0到255之间的整数,而B只能保存-128到127之间的数字。因为正字符类型是最小的整数,所以:
a=65
a=’ A
a=’ \ x41三个赋值语句等价,A保存的最后一个是65。也就是说,字符数据可以和数字数据混合。如果A是65,即字符“A”,则可以将大写字母转换为小写字母,并加上32,即:
a=a 32//变量A的大写字母改为小写字母‘A’。将小写字母改为大写字母的方法如下:
A=A-‘ A ‘ ‘ A ‘;//其实是a=a-32;注意数值和数字字符的区别。1和2代表数值,而“1”和“2”代表数字字符。1不等于‘1’,2不等于‘2’,因为‘1’和‘2’保存的ASCII值分别是49和50,所以1和49肯定不相等。编程时,它们可以相互转换。要将数字字符更改为其相应的数值,只需减去48(‘0 ‘),如:
‘8’-‘0’==8,’5’-‘0’=5,’4’-48=4
当然,也可以将数值反转成字符,比如:
8 ‘0’==’8′,5 ‘0’==5,4 48==
‘4’
接下来,我们看一下实数常量如何表示?C语言中实数采用浮点数表示,可分单精度浮点数还是双精度浮点数。浮点数有常规表示和科学记数法表示两种。我们平时见到的浮点数形如:
整数.小数
的形式,在C语言中,整数部分为零时可以省略不写,如;
.小数
小数部分为零也可以不写,如:
整数.
3.14159,.625等都是合法的小数。小数后面如果不跟后缀,默认的是双精度浮点数。如果小数后跟后缀f,表示单精度浮点数,如3.1415f。
浮点数还可以用科学计数法表示,尾数 X 10指数写成;
尾数E指数
尾数可以是整数或小数,不能省略;E可以是大写或小写,指数可以是负整数或正整数。以下是合法的小数表示:
6.026E-27、1.2e+30、1E-5
但是E-5、12e、2e3.5等都是错误的实型数据表示!
本节讲了宏常量、变量常量的定义和使用,以及不同数据类型的普通常量表示,深入剖析了字符型数据与整型数据的关系。本讲就到这里,下一讲再见!