常量
一,常量
1,整型常量(如10,123450 ,- 345等都是整型常量.)
!-----整型常量分为以下三种。
1 八进制:04,075,-034L
2 十进制:8932,-3564L
3 十六进制 :0x45,0x3A
#-----前缀:开头加的0,0x,分别表示的是对应的进制。
@----后缀:
在一个整型常量后面加一个字母l或 L,则认为是 long int 型(长整型)常量,如 28,10L 等。
在一个整型常量后面加一个字母 u或 U,则认为是 unsigned int 型(短整型)常量,即无符号整数
举例:345u,0x3CL,076lu。
2,实型常量
!----有两种表示形式
1 十进制小数形式:由数字和小数点组成如: 12.5,0.35 ,- 6.7, 0.0,12.0等。(注意:必须带小数点)
2 指数形式:如 12.34e3(代表 12.34 X10 3),-12.34e -3(代表-12.34 X10 -3),0.145E -25(代表 0.145X10 -25)等)
3 注:e或E之前必须有数字,且e或E后面必须为整数(为10的多少次方)。如不能与成e4,12e2.5。(e前e后必有数,e后必须为整数)
@----(程序阅读题输出时 )规范化的指数表示形式:小数点前只有一位非零数字,小数后面的部分占6位,指数部分占4位,共13位。如:1.23e -2,%e输出时以规范化形式输出1.230000E-002
%-----实型常量默认为double,若为想为float型则后面加f,如3.23f
3,字符常量
!----有两种形式的字符常量:(共性)
字符常量是指用一对单引号括起来的一个字符。如 'a‘ ’9' ’!' ‘\n' 等。其中的单引号只起定界作用,并不表示字符本身,所以单引号被称为字符常量的“定界符”。
字符常量只能用单引号括起来,不能用双引号或其他括号。
在C中,指定用1个字节( 8位)存储一个字符单元,其中首位为0。
字符常量只能是单个字符,不能是字符串,当然也不可为空,因为这样将会违背计算机存储数据的本质了。
转义字符表示一个字符,会占用一个字节长度。
字符常量(字符串常量)来被计算机存储数据的本质:字符常量存储在计算机存储单元中时,并不是存储字符(如 a,z,#等)本身,而是以其代码(一般采用ASCII代码)来存储的在计算机里面的。例如字符a的ASCII代码是 97,因此,在存储单元中存放的是 97(以二进制的形式存放的),而不是字符a。
1 普通字符:
用单撇号括起来的一个字符,如 : ' a ' , ' ? ', ' #' .不能写成, ' ab' , ' 23 ' , ' a?' (注: 区分大小写)。 特别注意:以单撇号括起来的一个字符才称作为普通字符。
字符常量存储在计算机存储单元中时,并不是存储字符(如 a,z,#等)本身,而是以其代码(一般采用ASCII代码)来存储的在计算机里面的。例如字符a的ASCII代码是 97,因此,在存储单元中存放的是 97(以二进制的形式存放的),而不是字符a。
字符可以是字符集中任意字符,但数字被定义为字符型之后参与运算的含义与数字不同。如'5'和 5 是不同的。'5'的 ASCII 值为十进制的53,而5的ASCII值为十进制的5。 ‘5’是字符常量,不能直接参与运算,是需要通过字符常量转为对应的ASCLL值(10进制的值)才可以直接参与数值运算,而 5 是数值常量,可以直接参与数值运算。更为本质:字符1点和整数1是不同的概念,字符1只是代表一个形状为 1的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字。而整数1是以整数存储方式(进制补码方式)存储的,占2个或4个字节。
ASCLL码表如下:表中的某些规制如下
a=97,b=98, c=99,d=100,---------------x=136,y=137,z=138
A=65 , B=66 , C=67, D=68 ,-----------------X=104 ,Y=105 ,Z= 106
字母都是渐增一;小写字母-大写字母=32(10进制)
2 转义字符:(大小写严格区分的)
除了以上形式的字符常量外,C还允许用一种特殊形式的字符常量,就是以字符\开头的字符序列的转义字符。 特别注意:以反斜杠开头的字符才称作为转义字符。
\n:换行,将当前位置移到下一行的开头。如下图,在以下字符串里面写入了一个\n,当程序读到它时,执行将当前位置移到下一行的开头的位置继续输出。
\t:水平制表符:将当前位置移到下一个tab位置,一个tab也就是8个字符位。当一组字符串当中插入一个 \t时,前面的字符数量如果大于等于8,小于16的话,按照两个tab位来处理。简单点说就是,当遇到\t时,前后不可紧挨着,若前后不可紧挨着,则另起一个tab位。
\b:退格,将当前位置后退一个字符,并将其覆盖。
\ x :一个号( x),可以输出此X字符,该X字符可以为所有范围内字符,包括转义字符和普通字符。
\000:1~3位八进制码对应的ASCII 字符(是字符,不是8进制数字),与该八进制码对应的字符。
\xhh :1~2 位十六进制码对应的 ASCII字符(是字符,不是16进制数字),与该十六进制码对应的字符 。,
\a:警告,产生声音或视觉信号。等000
4,字符串常量
!----字符串常量是用一对双撇号括起来的字符序列,如"boy","123","a"等。字符串常量是双撇号中的全部字符(但不包括双撇号本身)。注意不能错写成'boy','!''123','a'。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。
#----字符常量与字符串常量不同,不能把一个字符串常量赋给一个字符变量;”即, “char c="a";”或“char c="abc",都是错误的。
@----计算机在存储字符串常量时的本质:每个字符串尾都会自动的加一个字符0(’0')来作为字符串结束标志(会占用存储空间),所以字符串是可以为空的。
在C语言中没有专门的字符串变量,若想将一个字符串存放在内存中,必须使用字符数组,即用一个字符型数组来存放一个字符串,数组中的每一个元素存放一个字符。
5, 符号常量
!----常量可以用一个标识符来表示,称为符号常量或宏常量,该标识符与此常量是等价的,可以在程序开头用# define命今来定义一个符号常量。
@---宏定义的一般形式为 #define 标识符 字符串 ; #define PI 3.14 //注意结尾没有分号。
¥----经过以上的指定后,本文件中从此行开始所有的PI都代表3.1416。在对程序进行编译前,预处理器先对PI进行处理,把所有PI全部置换为3.1416。
&----要区分符号常量和变量,不要把符号常量误认为变量。符号常量不占内存,只是-临时符号,在预编译后这个符号就不存在了,故不能对符号常量赋以新值。
%----优点 : 1 含义清楚。2 “一改全改”