第一句子大全,网罗天下好句子,好文章尽在本站!

C语言符号常量的优点 会是那几点?

时间:2019-01-19

符号常量一般用户定义一个全局使用的数据,而且要改变该数据的时候,只需要改变符号常量的值,代码中引用符号常量的地方,都会把值相应修改过来

友情提示:本文共有 1188 个字,阅读大概需要 3 分钟。

符号常量是一个常量,是不变量,所以,在编译的时候,就把符号常量出现的地方,替换为符号常量对应的常量。符号常量一般用户定义一个全局使用的数据,而且要改变该数据的时候,只需要改变符号常量的值,代码中引用符号常量的地方,都会把值相应修改过来。如下是一个测试的例子。

程序的运行结果如下:

可以看到,x, y, z 变量的值,相差100,这个100就是符号常量A的值。那么,如果我们想设置x, y, z 变量的值相差500,我们只需要修改符号常量A的定义为:

#define A 500

那么,在编译代码的时候,就把符号常量A出现的地方,使用500这个数值来代替,所以,就有:

X = 500;

Y = X + 500;

Z = Y + 500;

所以,符号常量的一个优点是:修改符号常量的值,在代码中所有引用符号常量的地方,都相应引用修改后的符号常量值。

下面讲解一个知识点,初学者可以跳过。当学习了if选择语句和预编译之后,才可以理解该知识点的讲解。

符号常量还有一个很大的优点,就是“选择性编译代码”,因为符号常量是在编译的时候,把符号常量替换为它代表的值。所以,配合#if宏编译,可以选择编译某些代码。例如,我们开发一个程序,要求兼容linux和windows操作系统平台的运行,那么,就需要在编译代码的时候,选择编译linux系统下的代码还是windows系统下的代码。如下是一个测试的例子。

程序运行结果如下:

可以看到,我们定义了符号常量sys_linux,它代表的常量值是1。所以,在 #if 预编译条件中,就是 #if 1 成立,所以,执行linux系统下的代码:

printf("linux system!n");

那么,当我们想编译该系统在windows操作系统下运行的时候,就是需要编译windows系统下的代码,所以,可以修改符号常量的定义为:

#define sys_linux 0

此时,#if 0 成立,执行 #else 后面的代码。所以,通过配置sys_linux 符号常量的值为零和非零,我们可以定义编译器选择编译linux系统下的代码还是windows系统下的代码。

针对这个问题,我们可以更深入地思考:如果我们要编译该程序在linux系统下运行,也要编译它在windows系统下运行,就是需要编译两个版本。那么,每次编译的时候,都要去修改sys_linux符号常量的值,这样确实很不方便!

那么,GCC在编译代码的时候,可以指定符号常量的值。在这里我们介绍GCC在编译的时候,怎么样设置符号常量的值,就是通过-D选项来定义。测试例子如下:

程序运行结果如下:

可以看到,在程序中输出符号常量A的值。但是,在代码中并没有定义符号常量A。然后,在GCC编译代码的时候,使用 -D 选项,定义符号常量A,并给符号常量A赋值300数值。

所以,运行代码的时候,输出符号常量A的值就是300数值。

本文如果对你有帮助,请点赞收藏《C语言符号常量的优点 会是那几点?》,同时在此感谢原作者。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。
相关阅读
vba常量如何声明 一条语句的事情 没多么复杂

vba常量如何声明 一条语句的事情 没多么复杂

No.1常量是一个特殊的数据值,vba编程中有许多预置常量,这些常量可以直接拿来使用,以代表特定的值。如Color常量包含了8种颜色值:编程中,只要给Color设置相应常量即可得到颜色。No.2VBA常量CalendarCallTypeColorComparisonDateDate Form...

2023-12-17 #经典句子

javaScript入门(1)注释 语句结束符 变量 常量 标识符

javaScript入门(1)注释 语句结束符 变量 常量 标识符

注释// 这是单行/* 这是多行注释*/语句结束符JavaScript中,每一个语句的结束都应该使用分号;结尾。这是在告诉解释器每段代码的有效范围。当然,你也可以不在代码结束的位置写上分号;,JavaScript会在每一行结束位置自动帮你添...

2023-12-14 #经典句子

const关键字:终于拥有真正的常量声明语句

const关键字:终于拥有真正的常量声明语句

...,首先要搞定的就是 JavaScript。虽然都说 JavaScript 和 Java 语言有很多的地方是相似滴,但你知道直到大叔发现这货不能声明常量时候的感受吗?!那真是欲哭无泪啊~ 一个堂堂滴编程语言,居然尼玛不能声明常量?!也好意思说...

2023-10-28 #经典句子

深入 Java 源码剖析之字符串常量|CSDN 博文精选

深入 Java 源码剖析之字符串常量|CSDN 博文精选

...常高的,可见,字符串对于我们而言非常关键。那么从C语言过来的同学会发现,在C中是没有String类型的,那么C语言要想实现字符串就必须使用char数组,通过一个个的字符来组拼成字符串。Java中是如何实现字符串的那其实在Java...

2023-10-09 #经典句子

数学学习和研究的高效语言 数学符号 简明 直观 准确 优美

数学学习和研究的高效语言 数学符号 简明 直观 准确 优美

...要性数学符号具有简明、直观、准确、理深符简和优美的优点,有日常语言不可替代的优越性。关于数学符号的重要性,德国数学家莱布尼茨说过:符号的巧妙和符号的艺术是人们绝妙的助手,因为它们使思考工作得到节约……...

2024-01-19 #经典句子

非正式会谈:语言的魅力 汉语把世界青年难倒 泰语没有标点符号

非正式会谈:语言的魅力 汉语把世界青年难倒 泰语没有标点符号

...油然而生的自豪感,我们中国人也是这样。一说起汉语的优点,我相信很多人都可以滔滔不绝的说出一大串。我们也可以很自豪的说,汉语是这个世界上最能后清楚的表达某一种意思的一种语言。也可以夸赞汉语是这个世界上最...

2023-09-20 #经典句子

必须写完整句子!美空军鉴定报告拒绝“火星文”

必须写完整句子!美空军鉴定报告拒绝“火星文”

...是美空军士兵的工作表现,以及帮助他们取得成功的个人优点。现役美空军士兵在服役3年后每年都要接受评估,但现役空军一等兵(E-3)和其他低级别现役空军士兵以及空军预备役高级士兵(E-4)及以下的士兵除外。报道还称...

2022-11-29 #经典句子

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

教孩子写游戏:快速入门C++语言 理解这12个概念 1天时间够了

...编程语言,也就是我们现在熟知的高级语言。高级语言的优点,是非常接近人类使用的自然语言。比方说上面的乘法,用汇编语言是一堆代码,而用高级语言,可以直接用乘号来书写。我想,一个没有学过编程的人,都能看明白...

2023-02-01 #经典句子