C语言变量和常量

变量和常量

标识符

在计算机高级语言中,用来对变量、符号常量、函数、数组、类型等命名的有效字符序列统称为标识符(identifier)。
C语言规定标识符:

  • 只能由字母,数字和下划线组成。
  • 不能以数字开头。
  • 字母区分大小写。

不能与关键字和保留字重复。
在传统C语言用法中,一般常量都使用大写字母,变量都使用小写字母。

变量

声明变量

所有变量都必须先声明后使用,尽管某些变量可以通过上下文隐式地声明。
声明变量的一般形式:

        数据类型 变量名列表;

一个声明指定一种变量类型,后面所带的变量表可以包含一个或多个该类型的变量。

short int a,b,i;  //有符号短整型变量
unsigned char c;  //无符号字符型变量

一个声明语句中的多个变量可以拆开在多个声明语句中声明。

short int a;
short int b;
short int i;
unsigned char c;

在声明变量后,应对该变量进行初始化。
初始化变量就是为变量赋一个初始值,只需在变量名后面加上赋值运算符=和应赋给变量的值。

short int a;
a = 10;
unsigned char c;
c = 'A';

可以在声明的同时对变量进行初始化。

short int a = 10;
unsigned char c = 'A';

不应将初始化的变量和未初始化的变量放在同一条声明中。

short int a,b = 10; //a未初始化,b初始化为10

常量

在程序运行过程中,其值不能被改变的量称为常量。
从字面形式上即可识别的常量称为“字面常量”或“直接常量”,即字面常量是没有名字的不变量。

整数常量

可以把整数常量写作十进制、八进制和十六进制。

  • 十进制:常量包含 0~9 中的数字,但是一定不能以 0 开头。
  • 八进制:常量包含 0~7 中的数字,必须以 0 开头。
  • 十六进制:常量包含 0~9 中的数字和 a~f 中的字母,总是以 0x 开头。

十六进制整数常量中的字母可以是大写字母也可以是小写字母。
整数常量的类型通常为 int,如果整数太大超出了范围,则转换成其它范围足够大的整数类型。
可以强制编译器把整数常量作为长整数,需在后边加上字母L(或l)。
可以强制编译器把整数常量作为双长整数,需在后边加上字母LL(或ll)。
可以指明整数常量是无符号的,需在常量后边加上字母U(或u)。

浮点型常量

浮点型常量可以写作为科学计数形式或指数形式。

  • 科学计数形式:十进制小数。
  • 指数形式:需要在指数数值前放置字母E(或e);eN(或e+N)表示 10 的 N 次方,e-N表示 10 的负 N 次方。

默认情况下,浮点型常量都以双精度数的形式存储。
为了说明浮点型常量是单精度的,需在常量后边加上字母F(或f)。
为了说明浮点型常量是扩展精度的,需在常量后边加上字母L(或l)。

字符常量

单引号括起来的单个字符称为字符常量。
C语言字符常量通常以ASCII码值的形式存储。
常用的字符常量ASCII码值:

  • 大写字母'A'ASCII码值为 65。
  • 小写字母'a'ASCII码值为 97。
转义序列

\开头的字符序列称为转义字符。
C语言规定的转义序列包括:

转义字符描述ASCII 码值
\a响铃0x07
\n换行0x0a
\t水平制表(跳到下一个tab位置)0x09
\b退格,将当前位置移到前一列0x08
\r回车,将当前位置移到本行开头0x0d
\f换页,将当前位置移到下页开头0x0c
\v竖向跳格0x0b
\\反斜杠字符0x5c
\’单引号字符0x27
\"双引号字符0x22
\0空字符0x00
\ddd位任意八进制值nnn
\xhh位任意十六进制值nn

宏定义

简单的宏

符号常量:用#define指令,指定用一个符号名称代表一个常量。
简单的宏(C标准中称为对象式宏)的定义有如下格式:

				#define 标识符 替换列表

宏的替换列表可以包括标识符、关键字、数值常量、字符常量、字符串字面量、操作符和排列。
当预处理器遇到一个宏定义时,会做一个“标识符”代表“替换列表”的记录。在文件后面的内容中,不管标识符在哪里出现,预处理器都会用替换列表代替它。
例:

#define N 100
#define PI 3.1419
#define CR '\r'
#define EOS '\0'

带参数的宏

带参数的宏(也称为函数式宏)的定义有如下格式:

		#define 标识符(参数列表) 替换列表

在宏的名字和左括号之间必须没有空格。如果有空格,预处理器会认为是在定义一个简单的宏。
带参数的宏可以包含空的参数列表。
例:

#define MAX(x,y)    ((x)>(y))?(x):(y))
#define IS_EVEN(n)    ((n)%2==0)  

现在如果后面的程序中有如下语句:

i = MAX(j + k,m - n);

预处理器会将这些行替换为:

i = ( (j+k) > (m-n) ? (j+k) : (m-n) );

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/167216.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一站式企业快递管理平台使用教程

因公寄件在企业中重要性的提升,催生出了企业快递管理平台。为什么这么说呢? 随着经济和快递行业的发展,因公寄件在企业中成了一件“常事”,寄文件合同、发票、节假日慰问品、样品等等,这种情况之下,因公寄件…

Vue3 设置点击后滚动条移动到固定的位置

需求&#xff1a; 点击不通过按钮&#xff0c;显示红框中表单&#xff0c;且滚动条滚动到底部 &#xff08;显示红框中表单默认不显示&#xff09; <el-button click"onApprovalPass">不通过</el-button> <div class"item" v-if"app…

vue打包优化

vue.config.js文件中 module.exports defineConfig({ productionSourceMap: false,//去掉mapjs文件 });

pwn:[SWPUCTF 2021 新生赛]nc签到

题目 linux环境下显示为 配合题目的下载附件&#xff0c;发现过滤了一些&#xff0c;一旦输入这些会自动关闭程序 ls被过滤了&#xff0c;可以使用l\s cat和空格都被过滤了&#xff0c;cat可以换成c\at ,空格可以换成$IFS$9

<HarmonyOS第一课>1·运行Hello World【课后考核】

【习题】运行Hello World工程 判断题 1.DevEco Studio是开发HarmonyOS应用的一站式集成开发环境。 正确(True) 2.main_pages.json存放页面page路径配置信息。 正确(True) 单选题 1.在stage模型中&#xff0c;下列配置文件属于AppScope文件夹的是&#xff1f;&#xff08;…

Youtube0播放?运营教你需要的技巧、策略与工具!

对于有跨境意向的内容创作者或者品牌企业来说&#xff0c;YouTube是因其巨大的潜在受众群和商业价值成为最值得投入变现与营销计划的平台。 据统计&#xff0c;98% 的美国人每月访问 YouTube&#xff0c;近三分之二的人每天访问。但是&#xff0c;YouTube还远未达到过度饱和的…

酵母双杂交服务专题(一)

酵母双杂交系统是一种在酵母这种真核生物模型中执行的实验方法&#xff0c;用于探索活细胞内部蛋白质间的相互作用。这种技术能够敏感地捕捉蛋白质间的细微和短暂相互作用&#xff0c;通过检测报告基因的表达产物来实现。作为一种高度灵敏的技术&#xff0c;酵母双杂交系统被广…

Spring Cloud LoadBalancer 简单介绍与实战

前言 本文为SpringCloud的学习笔记&#xff0c;如有错误&#xff0c;希望各位高手能指出&#xff0c;主要介绍SpringCloudLoadBalancer的基本概念和实战 文章目录 前言什么是LoadBalancer负载均衡分类服务端负载均衡客户端负载均衡服务端负载均衡和客户端负载均衡的优缺点 常见…

评测|PolarDB MySQL 版 Serverless

评测&#xff5c;PolarDB MySQL 版 Serverless 目录 一、测试背景 1.1、云原生数据库 PolarDB Serverless新架构概念 1.2、Serverless资源弹性扩缩触发条件 二、PolarDB的Serverless能力与同类型产品进行对比 三、动态弹性升降资源的能力测试 3.1、测试资源 3.2、测试一…

ubuntu22.04在线安装redis,可选择版本

安装脚本7.0.5版本 在线安装脚本&#xff0c;默认版本号是7.0.5&#xff0c;可以根据需要选择需要的版本进行下载编译安装 sudo apt-get install gcc -y sudo apt-get install pkg-config -y sudo apt-get install build-essential -y#安装redis rm -rf ./tmp.log systemctl …

freeRTOS下载链接(sourceForge)

FreeRTOS Real Time Kernel (RTOS) download | SourceForge.net 文件名&#xff1a;FreeRTOSv202212.00.exe 双击后会自动变成这个样子的&#xff1a; 文件夹大小&#xff1a;506M 可以看到跟那个教程里面的文件结构是一模一样的&#xff0c;所以很可能是同一个最新版本的文件…

Linux(Centos)上使用crontab实现定时任务(定时执行脚本)

场景 Windows中通过bat定时执行命令和mysqldump实现数据库备份&#xff1a; Windows中通过bat定时执行命令和mysqldump实现数据库备份_mysqldump bat-CSDN博客 上面讲windows中使用bat实现定时任务的方式&#xff0c;如果是在linux上可以通过crontab实现。 cron是服务名称。…

高斯DB数据库添加字段并添加字段注释

个人网站 公众号小肖学数据分析 可以使用以下SQL语句向高斯DB数据库添加字段并添加字段注释&#xff1a; ALTER TABLE 表名 ADD COLUMN 列名 数据类型 COMMENT 字段注释; "表名"替换为要添加字段的表名&#xff0c;"列名"替换为要添加的字段名&#xf…

怎样提升伦敦银买卖技巧?

如果投资者想提升伦敦银的买卖技巧&#xff0c;可以学习一些有用的技术分析方法。所谓技术分析&#xff0c;就是通过对行情过往价格和相关交易数据进行收集&#xff0c;用图表的方式解读白银市场&#xff0c;进而预测行情未来主线走势、判断价格细节变化、寻找重要支撑点阻力点…

Linux系统常用的组合命令

1. 管道&#xff08;|&#xff09;&#xff1a;将一个命令的输出传递给另一个命令作为输入。例如&#xff1a; command1 | command2 在这个命令中&#xff0c;command1 的输出会作为 command2 的输入,直接将一个命令的输出传递给另一个命令进行处理. 你可以使用 grep 来查找关…

TikTok Shop 与英国皇家邮政合作:为卖家提供“Click and Drop”服务

11 月 21 日&#xff0c;TikTok Shop 宣布与皇家邮政 建立新的合作伙伴关系 &#xff0c;为平台上的商家推出 Click & Drop。此次合作将使各种规模的商家能够通过将皇家邮政的 Click & Drop 与其 TikTok Shop 帐户集成来改善其履行体验并更有效地发出订单&#xff0c;…

科普:多领域分布式协同仿真

分布式协同仿真是一种在分布式计算环境中进行协同工作的仿真方法。使用该方法进行协同仿真时&#xff0c;仿真任务将被分发到多个计算节点上&#xff0c;并且这些节点可以同时工作以模拟完整的系统行为。分布式协同仿真已被广泛应用于工程、科学和军事领域&#xff0c;以便更好…

医保线上购药系统:代码驱动的医疗创新

医保线上购药系统&#xff0c;这是一个融合技术和医疗的创新典范。本文将通过简单的技术代码示例&#xff0c;为您揭示这一系统是如何通过技术驱动医疗创新&#xff0c;为用户提供更智能、便捷的健康管理体验的。 1. 前端界面开发 使用React框架&#xff0c;我们可以轻松构建…

深度探究数据要素市场,企业为什么要参与数据资产化建设

我国正在发展数字经济&#xff0c;培育数字要素市场&#xff0c;推进数据市场化。在十四五数字经济发展规划中就已经将数据要素列为数字经济深化发展的核心引擎。今天和大家分享关于数据要素的前世今生&#xff0c;您将了解以下知识点&#xff1a; 1.什么是数据要素&#xff1f…

可视化工作流管理流程及工具

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo领歌上手快、实施成本低&#xff0c;可帮助企业快速落地敏捷&#xff0c;提质增效、缩短周期、加速创新…