常量及其类型

2.2 常量及其类型

常量是指在程序运行过程中,其值保持不变的量。常量也分各种类型。

 

1. 整数

整数在计算机中是准确表示的,C语言中的整数可以用十进制、八进制和十六进制表示。

(1)    八进制整数是以数字0开头,八进制整数一般不使用负数。

(2)    十六进制整数是以数字0和字母x(大小写均可)打头。例如,0x2f是一个十六进制,相当于十进制的47。十六进制整数也不使用负数。

在整数后面加上后缀u或U表示无符号整数,如70000u,0123u,0x567abU等。

在整数后面加上后缀l或L表示长整数,如-124783648l,1234567890L等。

在整数后面加上后缀ul或UL表示无符号长整数,如3456ul,1234567890ul等。

2. 实数

实数是在计算机中近似表示的。实数只能用十进制表示而不能用其它进制表示,有两种书写格式。

(1)小数格式。由正负号、整数部分、十进制小数点和小数部分表示。为了计算机正确识别实数,书写小数点是必不可少的。如: .543、-25、0. 、.0 、0.0

(2)指数格式。在小数格式基础上,后面再加上一个e或E后跟一个1~3位整数部分。如: -1.234E8、2.74e-02、2.71828e0、.86e-3、1e-2等。

3. 字符常量

字符常量是指仅含单个ASCII字符的常量。有两种表示方法。

(1)单引号表示法。对可显示字符,直接用单引号将该字符括住。

(2)转义字符表示法。对不可显示字符,主要指那些控制字符如换行符、回车符、制表符等,还有一些在C语言中有特殊含义和用途的字符如单引号、双引号、反斜杠等,只能用转义字符表示。

转义字符既可以由反斜杠开头后跟某个特定字母的形式表示(如 ’\n’ , ’\t’ )也可以用反斜杠开头,后跟1~3位八进制数(此时,八进制前不可以加0)或1~2位十六进制数(此时,十六进制数前面必须冠以小写字母x,x前面也不能带数字0)来表示(如 ‘\012’ , ‘\xa’等),这些八进制或十六进制数表示对应字符的ASCII代码。

当然,可显示字符也可以用转义字符表示。例如,’A’,’\101’,’\x41’都代表字母A


转义字符


含义


十进制ASCII代码值


说明


\0


NULL


0


ASCII代码值为0


\a


BELL


7


报警铃响


\b


BS


8


退格符(backspace


\f


FF


12


换页符


\n


NL(LF)


10


换行符


\r


CR


13


回车符


\t


HT


9


水平制表符(Tab


\v


VT


11


垂直制表符


\\


\


92


反斜杠


\’



44


单引号


\”



34


双引号

C语言对字符型和整型是不加区分的,字符常量被忽视为1字节的整数,可以像整数一样参加数值运算,其值就是该字符的ASCII码。

4. 字符串常量

字符串常量是用双引号括起来的0个或多个字符的序列。

(1) 字符串常量的存储方式。按字符串中字符从左到右的顺序依次占用连续的存储单元,每个字符占一个字节,存放其对应的ASCII码。C编译系统会在每个字符串常量的末尾追加一个零字符NULL( ‘\0’ )作为字符串的结束标识符。所以,一个含有n个字符的字符串常量要占用n+1个字节的存储空间。但零字符NULL打印时不显示。

(2) 字符串常量和字符常量的区别。

每个字符常量只占用一个字节的存储空间,而字符串常量则要占用一批连续的存储单元,其所占字节数为字符串长度加1.

字符型常量可以存放在字符串常量中,而字符串常量则必须放在字符串数组中。

字符型常量可以和整数混合运算,而字符串常量不可以。

时间: 2024-10-14 11:31:48

常量及其类型的相关文章

浅谈C#中的常量、类型推断和作用域

浅谈C#中的常量.类型推断和作用域 作者: 字体:[增加 减小] 类型:转载 时间:2013-12-19我要评论 这篇文章主要介绍了C#中的常量.类型推断和作用域,有需要的朋友可以参考一下 一.常量常量是其值在使用过程中不会发生变化的变量.在声明和初始化变量时,在变量前面家关键字const,就可以把该变量指定为一个常量: const int a=100;//a的值将不可以改变 常量的特征: 1.常量必须在声明时初始化.指定了其值以后,就不能再修改了.2.常量的值必须能在编译时用于计算.因此不能从

指针,常量和类型别名

定义typedef char* cptr,cptr和char *在定义数据时的区别,可由下面两个程序得出.typedef char * cptr;void main(){char a;const cptr p = 0;p = &a;?system("pause");}上面的程序编译时报错,error C3892: “p”: 不能给常量赋值 void main(){char a;const char * p = 0;p = &a; system("pause&q

指针、常量和类型别名

今天看了C++Primer的2.5.1的一点小理解. 如果某个类型的别名指代的是复合类型或是常量,那么它用到声明语句里面就会产生意想不到的后果,例如下面的声明语句用到了类型pstring,它实际上是类型char*的别名: typedef char* pstring; const pstring cstr = 0; //cstr是指向char的常量指针 const pstring* ps; //ps是一个指针,指向char的常量指针. 上述两条声明语句的基本数据类型都是const pstring,

C++如何确定常量的类型

程序的声明将特定的整型变量的类型告诉了C++编译器,但编译器是如何知道常量类型的呢?假设在程序中使用常量来表示一个数字: Cout<<"year="<<1492<<"\n"; 程序将把1492储存为int,long还是其他整型呢?答案是,除非有理由存储为其他类型(如使用了特殊的后缀来表示特定的类型,或者是太大,不能存储为int),否则c++将整型常量存储为int类型. 首先来看看后缀.后缀是放在数字常量后面的字母,用于表示类型.整

Java基础(变量数&amp;常量&amp;据类型&amp;类型转换)

什么是变量: 变量就是一个不固定的数值,它随时会改变,就像银行卡里存的钱一样会变动. 变量的格式:1  数据类型 变量名=变量值:  2  数据类型 变量名: 变量名=变量值: 变量的三大要素:1变量类型  2变量名 3变量值 这样说可能有些抽象,我们看图就一目了然: 什么是常量: 常量是在程序执行过程中,数值已经固定好了的,不会发生改变. 常量的格式:只要在变量前加上final. 只能赋值一次,通常在定义的时候会为其初始化. 数据类型分类: 基本数据类型4类8种 A:整数 占用字节  B:浮点

go语言基础一:数据类型,变量和常量,类型转化

做了很久的java,最近有空研究下go语言,跟java一样,go语言也是一门语言,那么他的学习方法跟java是相差不远的,记得之前入门java的时候,自己摸索, 一抹黑很难受,那么现在学习go语言,因为有了之前的经验,所以自己从基础开始学习go语言. 一   数据类型 java中 数据类型分为: 基本数据类型和引用数据类型,String 是应用数据类型,所以存在比较特殊的地方 包括: byte,short,int ,floate,double,Boolean,long  ,char,这是java

4、多用类型常量,少用#define预处理指令

摒弃: #define ANIMATION_DURATION 0.3 #define ERROR_MESSAGE @"ErrorMessage" 1)没有常量的类型信息 2)假设此指令声明在某个头文件中,那么所有引入了这个头文件的代码,都可以访问和修改ANIMATION_DURATION. 推荐: 1.私有常量 .m文件 static const NSTimeInterval kAnimationDuration = 0.3; static NSString *const kError

第4条:多用类型常量,少用#define预处理指令

定义常量的几种方式: 1.#define ANIMATION_DURAION 0.3         //定义了一个动画时长的常量, 预处理过程会把碰到的所有ANIMATION_DURAION一律替换成0.3 2.static const NSTimeInterval kAnimationDuration = 0.3;  //static 意味着该变量仅在定义此变量的编译单元中可见(也是.m文件).这种常量不出现在全局符号表中. 3. extern NSString *const StringC

C#与Java对比学习:类型判断、类与接口继承、代码规范与编码习惯、常量定义(转载)

C#与Java对比学习:类型判断.类与接口继承.代码规范与编码习惯.常量定义 类型判断符号: C#:object a;  if(a is int) { }  用 is 符号判断 Java:object a; if(a instanceof Integer) { } 用 instanceof 符号判断 类与接口的继承: C#:public class MDataRow : List<MDataCell>, IDataRecord, ICustomTypeDescriptor Java:publi