购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2-4 常数的表达方式

在本节中,将说明C语言常数的表达方式。

2-4-1 整数常数

C语言的整数常数除了我们从小就使用的十进制,也有八进制和十六进制,程序设计时十进制和我们的习惯用法并没有太大的差异。

实例1: 请将5设定给变量i,可用下列方式表示:

i=5;

另外,在C语言中是允许八进制的整数存在的,凡是以0开头的整数都被视为八进制数字。

实例2: 试说明013和026的十进制值。

013等于11 026等于22

C语言中,也允许十六进制的整数值存在,凡是以0x开头的整数都被视为十六进制整数。

实例3: 试说明0x28和0x3A的十进制值。

0x28等于40 0x3A 等于58

在十六进制的表示法中,例如0x3A和0x3a意义是一样的。

程序实例 ch2_4.c:八进制和十六进制整数输出的应用。

整数的另一种常数表示方式是在数字后面加上l或L,表示这是一个长整数。一般而言,整数值如果太大,编译程序会自动将它设定成长整数(例如,大于32767或小于-32768的短整数)。

注1 值得注意的是,如果将某变量声明成长整数,则在使用时尽量在此变量值后面加l或L,以避免不可预期的错误。

注2 对于目前的Dev C++而言,整数或长整数皆可使用32位表示,彼此是没有差异的,因此我们在做程序设计时可以忽略l或L。

除了上述进制外,C语言也有二进制,在这个进制下可以执行位运算,本书将在第19章解说。

下列是二进制、八进制、十进制和十六进制的转换表。

进制转换表

续表

十进制是我们熟知的进制,其他进制表示如下:

□ 十六进制:数字到达16就进位,所以单一位数为0~15,其中10用A表示,11用B表示,12用C表示,13用D表示,14用E表示,15用F表示,到达16就进位。

□ 八进制:数字到达8就进位,所以单一位数为0~7,到达8就进位。

□ 二进制:数字到达2就进位,所以单一位数为0~1,到达2就进位。

2-4-2 浮点常数

由于双倍精确度浮点数(double)和一般浮点数(float)之间,除了容量不一样之外,其他均相同,所以在此节我们将其合并讨论。

除了基本的浮点数之外,C语言接受科学记数表示法的浮点数。

实例: 若有一数字是123.456,则我们可以将它表示为:

1.23456E2

0.123456e3

在上例的科学计数法表示中,大写E和小写e意义是一样的。

另外,若是有一个数字是0.789,我们可以省略0,而直接将它改写成.789。

2-4-3 字符常数

一般在单引号之间的字符,我们都将其称为字符常数。例如‘a’,‘;’,‘3’皆是字符常数。至于这些字符常数所代表的实际值,则必须查阅ASCII表。从附录A中(可在前言最后扫码下载),可知‘a’是97,‘;’是59,‘3’是51。

实例1: 说明‘\0’和‘0’的ASCII值:

'\0' 值是0 '0' 值是48

另外,我们有时也将字符常数和一般整数混合进行加法和减法运算。

实例2: 假设有一字符变量ch=‘a’;有一指令是ch=‘a’+1;因为‘a’值是97,执行加法运算后ch值是98,所以最后ch值是‘b’。

程序实例 ch2_5.c:字符常数的输出。

上述printf( )是输出函数,“%c”是字符输出的格式符号,第3章会做更详细的说明。

2-4-4 字符串常数

尽管在2-3-4节已对字符串数据形态做了介绍,由于它的观点很重要,所以在此再强调一次。一个字符串常数,其实就是在双引号之间任意个数的字符符号。例如:

“This is a good book”←一个字符串

“ ”←一个空字符串

就技术观点而言,其实字符串就是一个数组,它的每个元素都只存一个字符常数,编译程序在编译此程序时会自动地把‘\0’放入字符串的末端,代表这是字符串的结束。

本书第7章将讲解数组。

实例: 假设有一字符串为“UNIX C”,则在C编译时,内存数据位置如下。

至于其他有关字符串的使用规则将在第10章做说明。

2-4-5 一次设定多个变量值

前面几小节笔者介绍了常数,同时将常数赋值给变量,C语言也允许一次设定多个变量拥有相同的值。

程序实例 ch2_5_1.c:设定a、 b、 c的值是5,本程序的重点是第7行。 Hv9Y4XRFAvd6A7lAHAnuvqVfPGZcu5r0331pdQb6t2KgGMqtyFJEKBIeVtv3OA/M

点击中间区域
呼出菜单
上一章
目录
下一章
×