C语言学习【常量和C预处理器】

C语言学习【常量和C预处理器】

符号常量(symbolic constant)
C预处理器可以用来定义常量 就像这样

#define TAXRATE 0.015/* 通用格式 末尾不加分号 */
/* 大写表示符号常量是 C 语言一贯的传统 */
#define NAME value

编译程序时,程序中所有TAXRATE都会被替换成0.015,这一过程称为编译时替换(compile-time substitution),这样定义的常量也称为明示常量(manifest constant)

另外,还有一个不常用的命名约定,即在名称前带 c_或 k_前缀来表示常量(如,c_level 或 k_line).

/* 在披萨饼程序中使用已定义的常量 */
#include "stdio.h"#define PI 3.1415926int main(void)
{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 = %1.2f, area = %.2f\n", circum, area);}

程序运行结果

What is the radius of your pizza?
6
Your basic pizza parameters are as follows:
circumference = 37.70, area = 113.10

printf()语句中的%1.2f表明,结果被四舍五入为两位小数输出

#define指令还可以定义字符和字符串常量,前者使用单引号,后者使用双引号,例如:

#define BEEP '\a'         /* 哔哔响 */
#define TEE 'T'
#define ESC '\033'
#define OOPS "Now you have done it!"

const限定符

C90标准新增const关键字,用于限定一个变量为只读,其声明如下

const int NOMTHS = 12;      /* MONTHS在程序中不可得更改 */

明示常量

C头文件limits.hfloat.h分别提供了与整数类型和浮点类型大小限制相关的相信信息,例如

#define INT_MAX +32767
#define INT_MIN -32768
/* 代表int类型的最大值和最小值 */
/* int整型变量范围 */
#include "stdio.h"
#include "limits.h"int main(void)
{printf("Maximum int value on this system = %d\n", INT_MAX);}

程序运行结果

Maximum int value on this system = 2147483647

以下为limits.h中的一些明示常量

类似的,float.h头文件中也定义了一些明示常量,如FLT_DIGDBL_DIG分别表示float类型和double类型的有效数字位数

示例程序

/* 使用limits.h和float头文件中定义的明示常量 */
#include "stdio.h"
#include <limits.h>
#include "float.h"int main(void)
{printf("Some number limits for this system:\n");printf("Biggest int: %d\n", INT_MAX);printf("Smallest long long: %lld\n", LLONG_MIN);printf("One byte = %d bits on this system.\n", CHAR_BIT);printf("Largest double: %e\n", DBL_MAX);printf("Smallest normal float: %e\n", FLT_MAX);printf("float precision = %d digits\n", FLT_DIG);printf("float epsilon = %e\n", FLT_EPSILON);return 0;}

该程序输出示例如下

Some number limits for this system:     
Biggest int: 2147483647
Smallest long long: -9223372036854775808
One byte = 8 bits on this system.
Largest double: 1.797693e+308
Smallest normal float: 3.402823e+038
float precision = 6 digits
float epsilon = 1.192093e-007

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

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

相关文章

Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之触控开关二

Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之触控开关二 1.概述 这篇文章在触摸屏上绘制一个开关&#xff0c;通过点击开关实现控制灯的开关功能。 2.硬件 硬件连接参考第一篇文章介绍 Arduino-ILI9341驱动-SPI接口TFTLCD实现触摸功能系列之获取触控坐标一 3.实现…

智能EDM邮件群发工具哪个好?

企业之间的竞争日益激烈&#xff0c;如何高效、精准地触达目标客户&#xff0c;成为每个市场战略家必须面对的挑战。在此背景下&#xff0c;云衔科技凭借其前沿的AI技术和深厚的行业洞察&#xff0c;匠心推出了全方位一站式智能EDM邮件营销服务平台&#xff0c;重新定义了邮件营…

Git使用(3):版本管理

一、查看历史 编写一个java类进行测试 选择Git -> Show Git Log查看日志。 第一次修改推送到远程仓库了&#xff0c;所以有origin&#xff08;远程仓库地址&#xff09;&#xff0c;第二次修改只提交到本地仓库所以没有。 二、版本回退 1、本地回退 在要回退的版本上右键&a…

Nginx的正向代理与反向代理

你好呀&#xff0c;我是赵兴晨&#xff0c;文科程序员。 今天&#xff0c;我们将一起了解什么是Nginx的正向代理&#xff1f;什么是Nginx的反向代理&#xff1f;并实际动手实践。 以下内容都是满满的干货&#xff0c;绝对不容错过。我建议先收藏这篇文章&#xff0c;然后找一…

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.1-2.2

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周&#xff1a;优化算法 (Optimization algorithms)2.1 Mini-batch 梯度下降&#xff08;Mini-b…

【科研】常用的实验结果评价指标(2) —— MAE 是什么? !

了解MAE 提示&#xff1a;先说概念&#xff0c;后续再陆续上代码 文章目录 了解MAE前言一、MAE 基本概念1. MAE 是什么&#xff1f;2. MAE 的起源3. MAE 的计算公式 二、MAE的适用场景是什么&#xff1f;三、MAE 的劣势&#xff0c;或 不适用于那些场景或者数据&#xff1f;四、…

一个小调整,竟然让交换机、路由器的CPU占用率降低了50%

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 下午好&#xff0c;我的网工朋友。 在信息时代下&#xff0c;不仅仅在网络工程领域&#xff0c;高CPU占用率都是一个非常常见的问题&#xff0c;…

JavaScript中带日期的操作

当我们把日期转换为Number类型的时候&#xff0c;就会变成时间戳&#xff08;毫秒&#xff09; const future new Date(2037, 10, 19, 15, 23); console.log(Number(future)); // console.log(future); //与上行代码等效● 所以我们就可以利用时间戳去做点东西&#xff0c;例…

Spring整合其他技术

文章目录 Spring整合mybatis思路分析Mybatis程序核心对象分析整合Mybatis 代码实现 Spring整合Junit修改成警告 Spring整合mybatis 思路分析 Mybatis程序核心对象分析 上面图片是mybatis的代码&#xff0c;上述有三个对象&#xff0c;分别是sqlSessionFactory&#xff0c;sqlS…

7nm项目之模块实现——02 Placeopt分析

一、Log需要看什么 1.log最后的error 注意&#xff1a;warnning暂时可以不用过于关注&#xff0c;如果特别的warning出现问题&#xff0c;在其他方面也会体现 2.run time 在大型项目实际开发中&#xff0c;周期一般较长&#xff0c;可能几天过这几周&#xff0c;所以这就需要…

Linux - make与makefile

文章目录 什么是make和makefile如何使用依赖关系 和 依赖方法伪目标 写个程序-进度条换行和回车的区别 什么是make和makefile make是一个命令 makefile是一个文件 这就是make和makefile的本质 make和 ll , pwd ,su 一样都是命令 makefile和 test &#xff0c; test.c 一样都是…

【408精华知识】计算机系统结构

感觉教材和网络上对于计算机系统的结构描述都比较模糊&#xff0c;我自己对其进行了总结&#xff0c;并且画出图&#xff0c;不过因为学习的还是不够深入和全面&#xff0c;有的地方肯定是有问题的&#xff0c;烦请大家批评指正&#xff0c;我会进行修改~ 文章目录 零、结构图总…