文档章节

C Primer Plus 第4章 字符串和格式化输入输出--4.3 常量和预处理器

idreamo
 idreamo
发布于 2016/05/11 05:55
字数 671
阅读 29
收藏 0

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

如何建立一个符号常量呢?

一个方法是声明一个变量,并设置该变量等于所需的常量。但变量的值是有可能被意外改变的。

C原来就提供了一个更好的方法是C预处理器。

预处理器也允许定义常量。只须在程序文件的顶部添加如下信息即可:

#define TAXRATE 0.015

当编译您的程序时,值0.015将会在TAXRATE出现的每一个地方替代它。这称为编译时代入法。

这样定义的常量通常被称为明显常量。

注意格式:首先是#define,其次是常量的符号名称,接着是常量的值。一般形式如下

#define NAME value

没有使用分号,是因为这是和种替代机制,而不是C的语句。

键入大写的常量是一个明智的C传统。这样当您在程序中间遇到大写的符号名时,您会立即知道这是一个常量而不是变量。

符号常量所使用的名字必须满足变量命名规则,可以使用大写和小写字母、数字和下划线字符。第一个字符不能是数字。

程序清单4.4 pizza.c程序

/*pizza.c--在这个比萨饼的例子中使用定义常量*/
#include <stdio.h>
#define PI 3.14159 
int main()
{
    float area,circum,radius;
    
    printf("What is the radius of your pizza?\n");
    scanf("%f",&radius);
    area=PI*radius*radius;
    circum=2.0*PI*radius;
    printf("Your basic pizza parameters are as follows:\n");
    printf("circumference=%l.2f,area=%l.2f\n",circum,area);
    return 0;
}

​#define 语名也可以用于定义字符和字符串常量 ,前者使用单引号,后者使用双引号;

#define BEEP '\a'

#define TEE 'T'

#define ESC '\033'

#define OOPS "Now you have done it! "

请记住,符号名后的所有内容都被用来代替它。

4.3.1 const 修饰符

C90新增加了创建符号常量的第二种方法,即可以使用const关键字把一个变量声明转换成常量声明:

const int MONTHS=12;  //MONTHS是一个代表12的符号常量

这就使MONTHS成为一个只读值。这个新方法,比使用#define更灵活。

4.3.2 系统定义的明显常量

C头文件limits.h和float.h分别提供有关整数类型和浮点类型的大小限制的详细信息。每个文件都定义了一系列应用于您的实现的明显常量。

C预处理器是个极其有用的工具,所以在可能的时候要尽量利用它。

 

© 著作权归作者所有

idreamo
粉丝 18
博文 139
码字总数 224743
作品 0
青岛
产品经理
私信 提问
加载中

评论(0)

C Primer Plus第6版_源代码+练习答案

下载地址:网盘下载 C Primer Plus(第6版)中文版详细讲解了C语言的基本概念和编程技巧。《C Primer Plus(第6版)中文版》共17章。第1、2章介绍了C语言编程的预备知识。第3~15章详细讲解了...

osc_d9817zy2
2018/07/06
8
0
#define 中的“ # 运算符”和“ ## 运算符”

利用宏参数创建字符串:# 运算符 在类函数宏(function-like macro)的替换部分中,“#”符号用作一个预处理运算符,它可以把语言符号(token)转化为字符串。例如,如果 x 是一个宏参量,那...

TMDJoJo
2012/07/07
237
0
[编程语言]C陷阱与缺陷

内容摘要 作者以自己1985年在Bell实验室时发表的一篇论文为基础,结合自己的工作经验扩展成为这本对C程序员具有珍贵价值的经典著作。写作本书的出发点不是要批判C语言,而是要帮助C程序员绕过...

21gprs
2014/05/23
0
0
学习C语言的7个步骤,对照一下,看你处在哪个阶段?

C是编译型语言。如果之前使用过编译型语言(如,Pascal或FORTRAN),就会很熟悉组建C程序的几个基本步骤。但是,如果以前使用的是解释型语言(如,BASIC)或面向图形界面语言(如,Visual Ba...

人邮异步社区
04/06
0
0
C/C++预处理、宏定义--你和大牛之间只差一个宏定义#define

  今天读一个github上下载的C语言代码,读得时候就像在读天书,完全不像C。在此之前,我一直以为自己C语言掌握的还不错的。所以恶补了以下关于预处理的知识。   相信很多读者和我一样,只...

osc_994n5tsc
2018/12/17
6
0

没有更多内容

加载失败,请刷新页面

加载更多

windows下安装M2Crypto

安装M2Crypto使用python里的pip安装功能安装即可。 步骤: 1、首先下载安装python 2.7版本 。下载完成后把python的路径加入到环境变量中 2、安装pip 。pip的下载地址为:https://pypi.python...

A_laoshiren
23分钟前
14
0
戳破中台泡沫,软件定义让数字中台脱虚入实

道路是曲折的,前途是光明的。 用这句话来形容数字中台当前的处境可谓是再恰当不过。从过去几年的轰轰烈烈,到年初备受各方质疑,数字中台从巅峰跌落到谷底,遭受了过山车般的待遇。其实对于...

大数据在线
23分钟前
12
0
vue源码---将data对象中的属性变成observable

function defineReactive(obj, key, val, cb) { Object.defineProperty(obj, key, { enumerable: true, configurable: true, get: () => { re......

gtandsn
25分钟前
11
0
我应该使用Vagrant还是Docker来创建一个孤立的环境? [关闭]

问题: I use Ubuntu for development and deployment and have a need for creating an isolated environment. 我使用Ubuntu进行开发和部署,并且需要创建一个隔离的环境。 I am consideri......

技术盛宴
28分钟前
28
0
PanDownload登录时账号登录失败,获取bdstoken失败

PanDownload一直以来都是我信赖的云盘下载工具,其下载速度确实是快 但天有不测风云,最近登录网盘账号时,提示账号登录失败,获取bdstoken失败 问题显现: 提示信息:账号登录失败,获取bds...

二营长意大利炮
28分钟前
19
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部