常量和C预处理器

news2025/1/17 4:03:15

本文参考C Primer Plus第四章

文章目录

  • 符号常量
  • printf()函数和scanf()函数
    • printf()函数
    • 使用printf()
    • printf()的转换说明修饰符

1.符号常量

        C头文件limits.h和float.h分别提供了与整数类型和浮点类型大小限制相关的详细信息。头文件都定义了一系列供实现使用的符号常量。例如,limits.h头文件包含以下类型的代码:

        #define IN_MAX +32767

        #define IN_MIN -32768

        这些符号常量代表int类型可表示的最大值和最小值。如果系统使用32位的int,该头文件会为这些符号常量提供不同的值。如果在程序中包含limits.h头文件,就可编写下面的代码:

        printf("Maxmum int value on this system=%d\n", INT_MAX);

        如果使用4字节的int,limits.h头文件会提供符合4字节int的INT_MAX和INT_MIN。

limits.h文件中的一些明示常量
符号常量含义
CHAR_BITchar类型的位数
CHAR_MAXchar类型的最大值
CHAR_MINchar类型的最小值
SCHAR_MAXsigned char类型的最大值
SCHAR_MINsigned char类型的最小值
UCHAR_MAXunsigned char类型的最大值
SHAR_MAXshort类型的最大值
SHAR_MINshort类型的最小值
USHAR_MAXunsigned short类型的最大值
INT_MAXint类型的最大值
INT_MINint类型的最小值
UINT_MAXunsigned int类型的最大值
LONG_MAXlong类型的最大值
LONG_MINlong类型的最小值
ULONG_MAXunsigned long类型的最大值
LLONG_MAXlong long类型的最大值
LLONG_MINlong long类型的最小值
ULLONG_MAXunsigned long long类型的最大值

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

float.h文件中的一些明示常量
符号常量含义
FLT_MANT_DIGfloat类型的尾数位数
FLT_DIGfloat类型的最少有效数字位数
FLT_MIN_10_EXP带全部有效数字的float类型的最小负指数(以10为底)
FLT_MAX_10_EXPfloat类型的最大负指数(以10为底)
FLT_MIN保留全部精度的float类型最小正数
FLT_MAXfloat类型的最大正数
FLT_EPSILON1.00和比1.00大的最小float类型值之间的差值

2.printf()函数和scanf()函数 

1.printf()函数

        请求printf()函数打印数据的指令要与待打印数据的类型相匹配。例如,打印数据时使用%d,打印字符时使用%c。这些符号被称为转换声明,它们指定了如何把数据转换为可显示的形式。

转换说明及其打印的输出结果
转换说明输出
%a浮点数、十六进制和p计数法(C99/C11)
%A浮点数、十六进制和p计数法(C99/C11)
%c单个字符
%d有符号十进制整数
%e浮点数,e计数法
%E浮点数,e计数法
%f浮点数,十进制计数法
%g根据值的不同,自动选择%e或%f。%e格式用于指数小于-4或者大于或等于精度时
%G根据值的不同,自动选择%E或%f。%E格式用于指数小于-4或者大于或等于精度时
%i有符号十进制整数(与%d相同)
%o无符号八进制整数
%p指针
%s字符串
%u无符号十进制整数
%x无符号十六进制整数,使用十六进制数0f
%X无符号十六进制整数,使用十六进制数0F
%%打印一个百分号

2.使用printf()

#include<stdio.h>
#define PI 3.14159
int main(void)
{
	int number=7;
	float pies=12.75;
	int cost=7800;

	printf("The %d contestants ate %f berry pies.\n",number,pies);
	printf("The value of pi is %f.\n",PI);
	printf("Farewell!thou are too dear for my possessing,\n");
	printf("%c%d\n",'$',2*cost);

	return 0;
}

运行结果: 

         

 3.printf()的转换说明修饰符

表1:printf()的修饰符
修饰符含义
标记

表2描述了5种标记(-、+、空格、#和0),可以不使用标记或使用多个标记

示例:"%-10d"

数字最小字段宽度
如果该字段不能容纳待打印的数字或字符串,系统会使用更宽的字段
示例:"%4d"
.数字

精度
对于%e、%E和%f转换,表示小数点右边数字的位数
对于%g和%G转换,表示有效数字最大位数
对于%s转换,表示待打印字符的最大数量

对于整型转换,表示待打印数字的最小位数

如有必要,使用前导0来达到这个位数
只使用.表示其后跟随一个0,所以%.f和%.0f相同
示例:"%5.2f"打印一个浮点数,字段宽度为5字符,其中小数点后有两位数字

h和整型转换说明一起使用,表示short int或unsigned short int类型的值示例:"%hu"、"%hx"、"%6.4hd"
hh和整型转换说明一起使用,表示signed char或unsigned char类型的值
示例:"%hhu"、"%hhx"、"%6.4hhd"
j和整型转换说明一起使用,表示intmax_t或uintmax_t类型的值。这些类型定义在stdint.h中
示例:"%jd"、"%8jx"
1和整型转换说明一起使用,表示long int或unsigned long int 类型的值
示例:"%1d"、"%81u"
11和整型转换说明一起使用,表示long long int或unsigned long long int 类型的值(C99)
示例:"%11d"、"%811u"
L和浮点转换说明一起使用,表示long double 类型的值
示例:"%Ld"、"%10.4Le"
t和整型转换说明一起使用,表示ptrdiff_t类型的值。ptrdiff_t是两个指针差值的类型(C99)
示例:"%td"、"%12ti"
z和整型转换说明一起使用,表示size_t类型的值。size_t是sizeof返回的类型(C99)
示例:"%zd"、"%12zd"

              

表2:printf()中的标记
标记含义
-待打印项左对齐。即,从字段的左侧开始打印该项
示例:"%-20s"
+有符号值若为正,则在值前面显示加号;若为负,则在值前面显示减号
示例:"8+6.2f"
空格有符号值若为正,则在值前面显示前导空格(不显示任何符号);若为负,则在值前面显示减号
+标记覆盖一个空格
示例:"%6.2f"
#把结果转换为另一种形式。如果是号o格式,则以0开始;如果是%x或%X格式,则以Ox或 OX开始;对于所有的浮点格式,#保证了即使后面没有任何数字,也打印一个小数点字符。对于%g和%G格式,#防止结果后面的0被删除
示例:"%#o"、"%#8.0f"、"%+#10.3e"
0对于数值格式,用前导0代替空格填充字段宽度。对于整数格式,如果出现-标记或指定精度,则忽略该标记


总结:今天学printf()函数就到这里啦,明天再补充一点printf()函数相关知识。scanf()函数也放到明天学吧!一起加油!

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

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

相关文章

可解释性人工智能(XAI)概述

文章目录 每日一句正能量前言可解释性人工智能&#xff08;XAI&#xff09;定义研究的作用应用领域XAI的目标后记 每日一句正能量 一个人若想拥有聪明才智&#xff0c;便需要不断地学习积累。 前言 人工智能&#xff08;AI&#xff09;的发展速度迅猛&#xff0c;并在许多领域…

C++:类 的简单介绍(一)

目录 类的引用&#xff1a; 类的定义&#xff1a; 类的两种定义方式&#xff1a; 成员变量命名规则的建议&#xff1a; 类的访问限定符及封装&#xff1a; 访问限定符 【访问限定符说明】 封装 class与struct的区别&#xff1a; 类的作用域&#xff1a; 类的实例化…

Scikit-learn (sklearn)速通 -【莫凡Python学习笔记】

视频教程链接&#xff1a;【莫烦Python】Scikit-learn (sklearn) 优雅地学会机器学习 视频教程代码 scikit-learn官网 莫烦官网学习链接 本人matplotlib、numpy、pandas笔记 1 为什么学习 Scikit learn 也简称 sklearn, 是机器学习领域当中最知名的 python 模块之一. Sk…

解决Android Studio gradle下载超时和缓慢问题(win10)

解决超时问题 一般配置阿里云代理就可以解决。 具体配置方法&#xff0c;参考&#xff1a;https://blog.csdn.net/zhangjin1120/article/details/121739782 解决下载缓慢问题 直接去腾讯云镜像下载&#xff1a; https://mirrors.cloud.tencent.com/gradle/ 下载好了之后&…

docker 部署及命令

一、容器概述 1、为什么要用到容器&#xff1f; ①容器可以屏蔽底层操作系统的差异性&#xff0c;让业务应用不管在哪里都是使用容器的环境运行&#xff0c;从而保证开发测试环境与生产环境的一致性 ②容器部署起来非常便捷和迅速&#xff0c;缩短开发测试部署的周期时间 2…

MySQL8 窗口函数 →_→ 专治GROUP BY后组内元素

前言 假设你有一张表&#xff0c;里面记录了各个城市的销售数据&#xff0c;包括城市、销售日期和销售额。你可能会使用GROUP BY来按城市对数据进行分组&#xff0c;这样就可以知道每个城市的总销售额了。但是&#xff0c;有时候你可能还会希望对每个城市的销售数据进行更细致…

不可错过的欧几里得几何:探索数学世界的奇迹应用

不可错过的欧几里得几何&#xff1a;探索数学世界的奇迹应用 一、引言二、欧几里得几何的起源与发展三、欧几里得几何的基本概念3.1、点、直线、平面的定义3.2、全等3.3、平行与垂直3.4、角度、三角形、四边形等基本图形的性质 四、欧几里得几何的公理五、欧几里得几何的应用总…

国考省考行测:分析推理,形式逻辑,集合推理,真假推理

国考省考行测&#xff1a;分析推理&#xff0c;形式逻辑 2022找工作是学历、能力和运气的超强结合体! 公务员特招重点就是专业技能&#xff0c;附带行测和申论&#xff0c;而常规国考省考最重要的还是申论和行测&#xff0c;所以大家认真准备吧&#xff0c;我讲一起屡屡申论和…

Kano模型

目录 1.介绍&#xff1a;2.Kano模型的作用&#xff1a;3.KANO模型使用场景&#xff1a;4.使用步骤&#xff1a;4.1设计问卷&#xff1a;4.2 数据分析4.2.1 KANO属性4.2.2 Better系数、Worse系数4.2.3 举例&#xff1a; 小结&#xff1a; 1.介绍&#xff1a; Kano模型是一种质量…

《合成孔径雷达成像算法与实现》Figure5.18

clc clear close all距离向参数 R_eta_c 20e3; % 景中心斜距 Tr 25e-6; % 发射脉冲时宽 Kr 0.25e12; % 距离向调频率 Fr 7.5e6; % 距离向采样率 Nrg 256; % 距离线采样点数 Bw abs(Kr*Tr); …

【微服务】springboot集成ELK使用详解

目录 一、前言 二、为什么需要ELK 三、ELK介绍 3.1 什么是elk 3.2 elk工作原理 四、ELK环境搭建 4.1 搭建es环境 4.1.1 获取es镜像 4.1.2 启动es容器 2.1.3 配置es参数 2.1.4 重启es容器并访问 4.2 搭建kibana 4.2.1 拉取kibana镜像 4.2.2 启动kibana容器 4.2.3 …

Linux系统明明还有足够的物理内存,调用fork却返回ENOMEM

使用systemtab hook fork&#xff0c;定位到报错调用路径SYSCALL_DEFINE0(fork)-》kernel_clone-》copy_process-》copy_mm-》dup_mm-》dup_mmap-》security_vm_enough_memory_mm-》__vm_enough_memory __vm_enough_memory返回了 -ENOMEM。其源码如下&#xff1a; 从代码可知f…

1 月 27日算法练习-贪心

文章目录 扫地机器人分糖果最小战斗力差距谈判纪念品分组 扫地机器人 思路&#xff1a; 最优机器人清理方法&#xff1a;机器人清理方法先扫左边&#xff0c;有时间再扫右边。最短时间&#xff1a;通过枚举&#xff0c;从 1 开始&#xff0c;清理面积会越大直到全部面积的清理…

测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字

学习了基于OpenCvSharp获取摄像头数据&#xff0c;同时学习了基于IronOcr的文字识别用法&#xff0c;将这两者结合即是从摄像头中识别文字。本文测试C#调用OpenCvSharp和IronOcr从摄像头中识别文字的基本用法、。   新版Winform项目&#xff0c;在Nuget包管理器中添加以下程序…

macOS系统鼠标变彩虹的解决办法(详细)

目录 第一步 打开活动监视器 第二步 找出【简体中文输入方式】这个进程 第三步 点击最上方的"X"按钮&#xff0c;选择"退出" 按钮 第一步 打开活动监视器 如果下方的任务栏没有显示&#xff0c;可以在左下角【启动台】-其他里打开 -- 第二步 找出【…

编曲学习:和声音程 调式体系 唱名法 调式调性

34届和声音程 调式体系 唱名法 调式调性https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65af994be4b064a8cb1c3a5f?course_idcourse_2XLKtQnQx9GrQHac7OPmHD9tqbv 34届独立音乐人编曲训练营https://app8epdhy0u9502.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_p…

Web 鼠标滑过有粒子掉落

最近在写接口&#xff0c;反正环境也有了&#xff0c;无聊写点代码 <!DOCTYPE html> <html><head><meta http-equiv"Content-Type" content"text/html; charsetUTF-8"><title>粒子效果</title><style>body {ma…

Selenium + Django + Echarts 实现亚马逊商品数据可视化爬虫项目

最近完成了1个爬虫项目&#xff0c;记录一下自己的心得。 项目功能简介 根据用户输入商品名称、类别名称&#xff0c;使用Selenium, BS4等技术每天定时抓取亚马逊商品数据&#xff0c;使用Pandas进行数据清洗后保存在MySql数据库中. 使用Django提供用户端功能&#xff0c;显…

架构篇20:高性能负载均衡-分类及架构

文章目录 负载均衡分类1. DNS 负载均衡2. 硬件负载均衡3. 软件负载均衡负载均衡典型架构小结单服务器无论如何优化,无论采用多好的硬件,总会有一个性能天花板,当单服务器的性能无法满足业务需求时,就需要设计高性能集群来提升系统整体的处理性能。 高性能集群的本质很简单…

【JavaScript】ECMA6Script es6

文章目录 一、 es6的介绍二、 es6的变量和模板字符串2.1 let 与 var2.2 const 与 var2.3 模板字符串 三、 es6的解构表达式四、 es6的箭头函数4.1 声明和特点4.2 实践和应用场景4.3 rest和spread 五、es6的对象创建和拷贝5.1 对象创建的语法糖5.2 对象的深拷贝和浅拷贝 六、es6…