常量(constant)详细讲解
常量,是一种在程序中保持类型和值不变的数据,按照类型有以下几种常量:

1.整型常量

2.实型常量

3.字符常量

4.字符串常量

5.枚举常量

一,整型常量(Integer)
计算机中,数据都是以二进制的形式储存。在C语言程序中,整型常量可用十进制,八进制,十六进制储存。
1.

整型常量的表示形式 特点 举例
十进制 由0~9数字序列组成,数字前可以带正负号 如256,-128,+7
八进制 以八为基的数字系统称为八进制,八进制整数由数字0开头,后跟0~7的数字序列组成,八进制数010相当于十进制数8 如021,-017
十六进制 以十六为基的数字系统称为十六进制,十六进制整数由数字0+字母X开头,后跟0~9,a ~ f ,十六进制0x10相当于十进制的16. 如0x12和-0x1F是合法的十六进制数,他们分别代表十进制数18,-31

2.整形常量的类型确定
长整型常量由常量值后跟L或者I来表示,如-256,1024L
无符号整型常量由常量值后跟U或者u来表示,30u和256U。
【注意】:但是不能表示小于0的数字,如(-30u),
无符号长整型常量由常量值后跟LU,Lu,Iu来表示,如30Lu等。

二,实型常量
1.实行常量(Float)的表示形式
由于计算机中的实型数以浮点(Floating point)的形式表示,小数点位置是可以浮动的,因此,实型常量可以称为实数,或者浮点数。
如,3.14159,-42.8都是实型常量。
(1)十进制小数形式
十进制小数形式与人们表示实数的惯用形式相同,是由。数字和小数点组成的,注意,必须有小数点。如0.123,-12.35,.98,18.等都是合法的表示形式。其中.98等同于0.98,18.等同于18.0,如果没有小数点,则不能作为小数形式的实型数。
(2)指数形式
在实际应用中,有时候会遇到绝对值很大或者很小的数字。这时,我们将其写成指数形式,更加直观方便。如0.00000345写成3.45*10^-6。
编辑程序时,不能输入角标,因此在C语言中以字母e或者E来代表以十为底的指数,
如:0.00000345写成---->>> 3.45e-6
其中e的左边是数值部分(有效数字),可以表示为整数或者小数的形式,且不能省略。右边是指数部分,必须是整数形式,
例如:
3e-2,
3.0e-2,
3.e-2,
.6e-2
都是合法的,而e3, 2e3.0, .e3 是不合法的表示形式。
2.实型常量的类型确定
实型常量隐含按双精度(double)型处理
单精度实型常量由常量值后跟1.25F,1.25e-2f等
长双精度(long double)实型常量由常量值后跟L或者l来表示。如:1.25L等,
三,字符常量

字符 含义 字符 含义
‘\n’ 换行 ‘\a’ 响铃报警
‘\r’ 回车(但不换行) ’ \" ’ 一个双引号
‘\0’ 空字符(Null) ‘\’’ 单引号
‘\t’ 水平制表符 ‘\’ 一个反斜杠
‘\v’ 垂直制表 ‘\?’ 问号
‘\b’ 退格 ‘\ddd’ 1-3位八进制ASCII码值所代表的字符
'\f 走纸换页 ‘\xdd’ 1-2位十六进制ASCII码值所代表的字符

四,字符串常量
字符串常量是由一对双引号括起来的一个字符序列,如“qwer”,“123”,“w”,等都是字符串。
【注意】:“A”是字符串常量,而不是字符常量。‘A’才是字符常量。
为了便于C程序字符串是否结束,系统对每个用双引号括起来的字符串常量都添加一个字符串结束标志—>> ASCII值为0的空操作符‘\0’。它不起任何控制动作。也不显示。
五,宏常量
宏常量,也称符号常量,是指一个标识符号代表的一个常量。
宏定义的一般形式为:
#define 标识符 字符串
其作用是用制 defne 编译預处理指令定义一个标识符和一个字符串,凡在源程序中发现该标符时,都用其后指定的字符串来替换。宏定义中的标识符被称为宏名( Macro Name ),将種序中出現的宏名替换成字符串的过程称为宏替换( Maem Substitution )。宏名与字符率之间可以有多个空白符,但字符串后只能以换行符终止,且除非特殊需要一般不出现分号。
例如:

#define PI 3.14159

它的作用是在编译预处理时,把程序中在该命令之后出现的所有标识符 P 均用3.141s9代普。其优点在于,能使用户以一个简单的名字代替一个长的字符串,提高程序的可读性
例如:

#include <stdio.h>
#define PI 3.14159//定义一个元的π
#define R 5.3//半径
int main()
{printf("面积为:%f\n", PI * R * R);//因为是浮点型,所以使用%fprintf("周长为:%f\n", PI * R * 2);//因为是浮点型,所以使用%freturn 0;
}

该程序运行结果如下:
面积为:88.247263
周长为:33.300854
**【编程提示】:**为了与源程序中的变量名有所区别,宏常量名,一般都采用大写字母表示。
分析几个常见错误:
**【常见错误1】:**误以为程序中用双引号括起来的字符事中与宏名相同的字特也会被宏替换
例如,语句“printf(“PI”);”中的 PI 不被替换,因为这里的 vPr 代表一个字符串,不是宏名。
**【常见错误2】**误以为宏替换时进行语法检查
事实上,宏替换只是一种简单的字符串替换,替换时是不进行任何语法检查的,因此只有在对已被宏展开后的源程序进行编译时オ会发现错误。
**【常见错误3】**将宏定义当作 c 语言来使用,在行末加上了分号,或者在宏名后加上了“=”
宏定义是一种编译预处理命令,如果在行末加分号,则会连同分号起进行替换。
例如假设将第2行语句改写为,

# define P 3.14159;

则经过宏展后,第6行语句将被替换成如下语句,从而出现语法错识。

printf("面积为:%f\n",3.14159;*5.3*5.3);

六,枚举常量

所谓“枚举( Lnumention )"就是一一列举之意,当某些量仅由有限个数据值组成时通常用枚举类型来表示。枚举数据类型( Fnumerated Daa Type )描述的是一组整型值的集合須,可用关键字 enum 来定义这种类型。
例如:

enmu reaponse{no , yes , none};
enmu response answer;

这两条语句首先声明了名为 response 的枚举数据类型,它有三种可能的取值: no 、 yes ,none ,然后用该枚举类型定义了一个名为 answer 的变量。
在枚举类型声明语句中,包含在花括号内的标识符均为整型常量,称为枚举常量。除非特别指定,否则这组常量中的第1个常量的值为0,第二个的值为1,第三个的值为2,往后依次递增1;
在上例中,变量 answer 可被赋予 no 、 yes 、 none 这三种值中的任何一种。
例如:

 answer no

相当于:

 anewer = 0;

变量 answer 还可以用在条件语句中,
例如

 if( anawer == yes )

相当于:

 if( answer == 1);

使用枚举类型的目的是提高程序的可读性。
例如,在上例中,使用 no 、 yes 、 none 比傅用0、12的程序可读性更好。
在上例中, response 被称为较举标记( Enumertion Tag ),枚举标记是可选的( Optional )也可以省略不写。
例如:

 anum{no , yes , none}answer ;

C 语言还允许在枚举类型定义时,明确的设置每一个枚举常量的值,例如:

enmu response{no = -1, yes = 1, none = 0};

若要在枚举定义中增加一种可能的取值,那么在“{”和“}”中间直接添加即可。
例如:

enmu response{no = -1, yes = 1, none = 0,unser = 2};
//其他类似的例子还有
enmu month{JAN = 1,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC};
//这里,第一个枚举常量值被明确的设置为1,以下的常量依次递增1.
//再如
enmu weekday{Sunday,Monday,Tuseday,Wednesday,Thursday,Friday,Saturday};

理解枚举类型的要点是:枚举标记后面变量表中的每个标识符都代表一个整型常数,这些标识符只是一个整型常数的名字,不是字符串,因此它们可以用于使用整型常数值的任何场合,但不能将其作为字符串直接输入和输出。例如下面的语句并不能达到输出字符串" yes ”的目的。

answer = 1;
printf("%s",answer);

十一,常量(constant)详细讲解相关推荐

  1. Java字节码的详细讲解-刘宇

    Java字节码的详细讲解-刘宇 一.字节码的整体结构 二.字节码范围解析 2.1.魔数 2.2.版本信息 2.3.常量池(constant pool) 2.4.描述符规则 2.5.访问标志(Acces ...

  2. C语言答案解析,C语言题库带详细讲解答案解析.doc

    C语言题库带详细讲解答案解析.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3. ...

  3. Java基础18-String类【String类的特点对象个数常用方法】【超详细讲解】

    Java基础-String类[超详细讲解] String类的特点 String在java.lang.String包中 1:特点 (1)String类型不能被继承,因为由final修饰 (2)Strin ...

  4. Java语言基础详细讲解

    就像人与人之间交流使用的语言需要遵循一定的语法规则一样,Java语言也离不开特定语法的支持,如基本语法.数据类型.变量.常量.运算符与表达式.类型转换和输入输出等,只不过这些语法要比日常生活中语言的语 ...

  5. 硬核来袭!!!一篇文章教你入门Python爬虫网页解析神器——BeautifulSoup详细讲解

    文章目录 一.BeautifulSoup介绍 二.安装 三.bs4数据解析的原理 四.bs4 常用的方法和属性 1.BeautifulSoup构建 1.1 通过字符串构建 1.2 从文件加载 2.Be ...

  6. String类中方法详细讲解

    学习目标: String类方法详细讲解 学习内容: 1.value属性 了解String类的value属性: private final char value[] ; //String类的不可变特性就 ...

  7. JavaScript中Object对象方法超详细讲解举例说明仅此一篇

    JavaScript中Object对象方法超详细讲解举例说明仅此一篇 Object.assign() Object.create() Object.values() Object.entries() ...

  8. 《Unity API常用方法和类详细讲解—Siki学院》课程学习笔记03

    <Unity API常用方法和类详细讲解-Siki学院>课程学习笔记03 课时18-20协程及其执行 1.使用Coroutine实现颜色动画渐变 void Update(){if (Inp ...

  9. JAVA多线程详细讲解

    一个程序只有一个从头到尾的执行路径.这样做的优点是易于编程,无需考虑过多的情况.但是,由于单线程需要在上一个任务完成之后才开始下一个任务,所以其效率比较低.在真实的项目运行过程中都具有多任务同时执行的 ...

最新文章

  1. PHP搭建OAuth2.0
  2. java 应用程序无法运行_关于解决浏览器无法运行小应用程序问题
  3. [C++STL]常用遍历算法
  4. 20165203 2017-2018-2 《Java程序设计》第一周学习总结
  5. 阿里技术解密:全链路压测体系建设方案的思考与实践
  6. java 递归 遍历目录下的所有文件
  7. Oracle date日期类型使用
  8. 农用圆形打捆机行业调研报告 - 市场现状分析与发展前景预测
  9. 62页 PPT 解剖《麦肯锡方法》及《麦肯锡工具》
  10. 华为配置DHCPv6
  11. php中文歌词,酷狗krc歌词解析并转换为lrc歌词php版
  12. 飞行管理计算机系统主要由什么组成,飞机结构介绍-飞行管理计算机系统.pdf
  13. STM32-GPIO的配置和使用
  14. 如何解决推荐系统中的冷启动问题?
  15. 音频声音太小怎么调大?
  16. 南宁计算机职称考试网,南宁人事考试职称网
  17. google skia
  18. Android平板电脑上的APP应用程序设计须知
  19. 原创短视频的美好时代,美拍连出两招加速达人变现
  20. MFC中与时间有关的函数

热门文章

  1. 谈一谈单片机开发的几种调试方案
  2. I2C时序分析及模拟实现I2C主设备驱动
  3. 在c#中using和new这两个关键字有什么意义
  4. 如何做好团队测试建设
  5. 农夫过河算法java,Java农夫过河问题的继承与多态实现详解
  6. openGL 纹理使用
  7. 《金融科技(FinTech)发展规划(2019-2021年)》梳理
  8. C#大作业(FPS大型单机游戏)笔记简记
  9. 实例探讨公共资源交易平台新亮点
  10. cpu选择K还是f?哪个更靠谱?