常量就是在程序中不能改变其值的量。按类型划分为:整型常量、实型常量、字符常量、字符串常量和枚举常量。
表2-1 一些关于常量的实例
常量的类型 | 实例 | 备注 |
整型常量 | 10,-30,0 | 包括正整数、负整数、零在内的所有整数 |
实型常量 | 3.14,-0.56,18.0 | 由于计算机中的实型数是以浮点形式表示的,即小数点位置是可以浮动的,因此实型常量既可以称为实数,也可以称为浮点数。 |
字符型常量 | ‘x’,‘X’,‘0’,‘9’ | 用一对单引号括起来的任意字符 |
字符串常量 | “Hello!”,“K88”,“9” | 用一对双引号括起来的零个或多个字符 |
表2-2 不同进制的整型常量的表示形式
进制 | 整数17的不同进制表示 | 整数-31的不同进制表示 | 特点 |
十进制 | 17 | -31 | 以10为基的数值系统称为十进制。由0~9的数字序列组成,数字前可以带正负号 |
二进制 | 00010001 (0*2^7+0*2^6+0*2^5+1*2^4+0*2^3+0*2^2+0*2^1+1*2^0 = 17) | -000011111 (-(0*2^7+0*2^6+0*2^5+1*2^4+1*2^3+1*2^2+1*2^1+1*2^0)) = -31 | 以2为基的数值系统称为二进制。二进制整数由0、1数字序列组成。在二进制系统中,数10相当于十进制中的数2 |
八进制 | 021 (将00010001从最低位开始三位一组得到其压缩表示021) (2*8^1+1*8^0 = 17) | -037 (将-000011111从最低位开始三位一组得到其压缩表示-037) (-(3*8^1+7*8^0))=-31 | 以8为基的数值系统称为八进制。八进制整数由数字0开头,后跟0~7(可用三位二进制位表示)的数字序列组成。在八进制系统中,数10相当于十进制中的数8 |
十六进制 | 0x11 (将00010001从最低位开始四位一组得到其压缩表示0x11) (1*16^1+1*16^0 = 17) | -0x1F (将-000011111从最低位开始四位一组得到其压缩表示-0x1F) (-(1*16^1+F*16^0))=-31 | 以16为基的数值系统称为十六进制。十六进制整数由数字0加字母x(或X)开头,后跟0~9,a~f或A~F(可用4位二进制位表示)的数字序列组成。在十六进制系统中,数10相当于十进制中的数16 |
表2-3 不同类型的整型常量的表示形式
不同类型的整型常量 | 实例 | 特点 |
有符号整型常量 | 10,-30,0 | 默认的int型定义为有符号整数,因此对int型无须使用signed |
无符号整型常量 | 30u,256U | 无符号整型常量由常量值后跟U或u来表示,不能表示成小于0的数,如-30u就是不合法的 |
长整型常量 | -256l,1024L | 长整型常量由常量值后跟L或l来表示 |
无符号长整型常量 | 30lu | 无符号长整型常量由常量值后跟LU、Lu、lU或lu来表示 |
表2-4 实型常量的表示形式
不同形式的实型常量 | 实例 | 特点 |
十进制小数形式 | 0.123,-12.35,.98 | 十进制小数形式与人们表示实数的惯用形式同,是由数字和小数点组成的。注意必须有小数点,如果没有小数点,则不能作为小数形式的实型数 |
指数形式 | 3.45e-6 (等价于0.0000034) | 指数形式用于直观地表示绝对值很大或很小数,在C语言中,由于程序编辑时不能输入上角标,所以以字母e或E来代表以10为底的指数。其中,e的左边是数值部分(有效数字),可以表示成整数或者小数形式,它不能省略;右边是指数部分,必须是整数形式 |
表2-5 不同类型的实型常量的表示形式
不同类型的实型常量 | 实例 | 特点 |
单精度(float)实型常量 | 1.25F,1.25e-2f | 单精度实型常量由常量值后跟F或f来表示 |
双精度(double)实型常量 | 0.123,-12.35,.98 | 实型常量隐含按双精度型处理 |
长双精度(long double)实型常量 | 1.25L | 长双精度实型常量由常量值后跟L或l来表示 |