当前位置: 首页 > news >正文

【时时三省】(C语言基础)常量和变量

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

在计算机高级语言中,数据有两种表现形式:常量和变量。

常量

在程序运行过程中,其值不能被改变的量称为常量。数值常量就是数学中的常数。

常用的常量有以下几类:

( 1 )整型常量。如1000,12345,0,-345等都是整型常量。

( 2 )实型常量。

有两种表示形式:

①十进制小数形式,由数字和小数点组成。如123.456,0.345,-56.79,0.0,12.0等。

②指数形式,如12.34e3(代表12.34×10的3次方),一346.87e-25(代表-346.87×10的负25次方),0.145E-25(代表0.145×10的负25次方)等,由于在计算机输入或输出时无法表示上角或下角,故规定以字母e或E代表以10为底的指数。但应注意;e或E之前必须有数字,且e或E后面必须为整数。如不能写成e4,12e2.5。

( 3 )字符常量。有两种形式的字符常量:

①普通字符,用单撇号括起来的一个字符,如:‘a ',' Z ',' 3 ',' ? ',' # '。不能写成'ab'或' 12 '。请注意:单撇号只是界限符,字符常量只能是一个字符,不包括单撇号。' a '和' A '是不同的字符常量。字符常量存储在计算机存储单元中时,并不是存储字符(如a,z,#等)本身,而是以其代码(一般采用ASCII代码)存储的,例如字符’a '的ASCII代码是97,因此,在存储单元中存放的是97(以二进制形式存放)。

②转义字符,除了以上形式的字符常量外,C语言还允许用一种特殊形式的字符常量,就是以字符“\”开头的字符序列。例如在printf函数中的' \ n '代表一个“换行”符。这是一种在屏幕上无法显示的“控制字符”,在程序中也无法用一个一般形式的字符来表示,只能采用这样的特殊形式来表示。

常用的以“\”开头的特殊字符如下

列出的字符称为转义字符,意思是将“\”后面的字符转换成另外的意义。“\ n”中的“n”不代表字母n而作为“换行”符。表中倒数第2行是一个以八进制数表示的字符,例如\ 101 代表八进制数101ASCII字符,即' A '(八进制数101相当于十进制数65)

( 4 )字符串常量。如" boy”,”123”等,用双撇号把若干个字符括起来,字符串常量是双号中的全部字符(但不包括双撇号本身)。注意不能错写成' CHINA ',boy ',' 123 '。单撇号内只能包含一个字符,双撇号内可以包含一个字符串。

说明:从其字面形式上即可识别的常量称为“字面常量”或“直接常量”。字面常量是没有名字的不变量。

( 5 )符号常量用#define指令,指定用一个符号名称代表一个常量。如:# definePI  3.1416

经过以上的指定后,本文件中从此行开始所有的PI都代表3.1 416在对程序进行编译前,预处理器先对PI进行处理,把所有PI全部置换为3.1 416。这种用一个符号名代表一个常量的,称为符号常量。在预编译后,符号常量已全部变成字面常量( 3.1 416 )。使用符号常量有以下好处。

①含义清楚。看程序时从PI就可大致知道它代表圆周率。

②在需要改变程序中多处用到的同一个常量时,能做到“一改全改”。

变量

变量代表一个有名字的、具有特定属性的一个存储单元。它用来存放数据,也变量名就是存放变量的值。在程序运行期间,变量的值是可以改变的。

变量必须先定义,后使用。在定义时指定该变量的名字和类型。

常变量

C99允许使用常变量,方法是在定义变量时,前面加一个关键字const,如:

const int a = 3;

定义a为一个整型变量,指定其值为3,而且在变量存在期间其值不能改变。

常量的异同是:常变量具有变量的基本属性:有类型,占存储单元,只是不许改变其值。可以说,常变量是有名字的不变量,而常量是没有名字的不变量。有名字就便于在程序中被引用。

说明:有些编译系统还未实现C99的功能,因此不能使用常变量。

标识符

在计算机高级语言中,用来对变量、符号常量名、函数、数组、类型等命名的有效字符列统称为标识符(identifier)。简单地说,标识符就是一个对象的名字。

C语言规定标识符只能由字母、数字和下画线3种字符组成,且第1个字符必须为字或下画线。

 

相关文章:

  • 一文读懂:AIGC 在工业互联网产教融合实训平台的创新应用
  • 05-1基于vs2022的c语言笔记——运算符
  • sklearn中的决策树-分类树:实例-分类树在合成数据集上的表现
  • NVIDIA DLI引领创新课程:基于提示工程的LLM应用开发探索
  • Bybit最大资金盗窃事件技术分析 by CertiK
  • 递归(典型算法思想)—— OJ例题算法解析思路
  • R-INLA实现绿地与狐狸寄生虫数据空间建模:含BYM、SPDE模型及PC先验应用可视化...
  • Java使用EasyExcel实现异步导出
  • JavaScript web APIs第一天——04-code——06-随机抽奖案例.html
  • 爱普生汽车用显示控制器IC:ScalerIC,汽车接口IC,相机接口IC
  • 如何使用tushare pro获取股票数据——附爬虫代码以及tushare积分获取方式
  • 编写一个程序,输入一个字符串并输出其长度(Python版)
  • 网络安全 机器学习算法 计算机网络安全机制
  • MySQL高阶操作的详细步骤说明,结合了索引优化、事务管理、存储过程、触发器等核心功能
  • Spring源码分析の循环依赖
  • 如何通过提示词更好地利用AI
  • A Large Recurrent Action Model: xLSTM Enables Fast Inference for Robotics Tasks
  • 基于C++“简单且有效”的“数据库连接池”
  • C++之vector和list辨析
  • 是德科技keysight N5173B信号发生器,是一款经济高效的仪器
  • 凤阳文旅局长回应鼓楼瓦片脱落:楼宇是否属于文物?施工经费用在何处?
  • 国家发改委:大部分稳就业稳经济政策将在6月底前落地
  • 文化破冰,土耳其亚美尼亚合拍摄影大师阿拉·古勒传记片
  • 大语言模型在线辩论说服力比人类辩手高出64%
  • 4天内,云南昆明又一县市区原主官被查
  • 受贿2.61亿余元,陕西省政协原主席韩勇一审被判死缓