常量和C预处理器

本文参考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.rhkb.cn/news/247126.html

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

相关文章

腾讯云幻兽帕鲁4核16G14M服务器性能测评和价格

腾讯云幻兽帕鲁服务器4核16G14M配置&#xff0c;14M公网带宽&#xff0c;限制2500GB月流量&#xff0c;系统盘为220GB SSD盘&#xff0c;优惠价格66元1个月&#xff0c;277元3个月&#xff0c;支持4到8个玩家畅玩&#xff0c;地域可选择上海/北京/成都/南京/广州&#xff0c;腾…

网络安全02--负载均衡下的webshell连接

目录 一、环境准备 1.1ubentu虚拟机一台&#xff0c;docker环境&#xff0c;蚁剑 1.2环境压缩包&#xff08;文件已上传资源&#xff09;&#xff1a; 二、开始复原 2.1上传ubentu&#xff1a; 2.2解压缩 2.3版本20没有docker-compose手动下载&#xff0c;包已上传资源 …

uniapp复选框 实现排他选项

选择了排他选项之后 复选框其他选项不可以选择 <view class"reportData" v-for"(val, index) in obj" :key"index"> <view v-if"val.type 3" ><u-checkbox-group v-model"optionValue" placement"colu…

物联网协议Coap之C#基于Mozi的CoapClient调用解析

目录 前言 一、CoapClient相关类介绍 1、CoapClient类图 2、CoapClient的设计与实现 3、SendMessage解析 二、Client调用分析 1、创建CoapClient对象 2、实际发送请求 3、Server端请求响应 4、控制器寻址 总结 前言 在之前的博客内容中&#xff0c;关于在ASP.Net Co…

MongoDB实战

1.MongoDB介绍 1.1 什么是MongoDB MongoDB是一个文档数据库&#xff08;以JSON 为数据模型&#xff09;&#xff0c;由C语言编写&#xff0c;旨在为WEB应用提供可扩展的高性能数据存储解决方案。 文档来自于"JSON Document"&#xff0c;并非我们一般理解的 PDF&…

以太网交换基础VLAN原理与配置

目录 7.以太网交换基础 7.1.以太网协议 7.2.以太网帧介绍 7.3.以太网交换机 7.4.同网段数据通信全过程 8.VLAN原理与配置 8.1.VLAN的基本概念 8.2.VLAN的应用 7.以太网交换基础 7.1.以太网协议 以太网是当今现有局域网(Local Area Network,LAN)采用的最通用的通信协议…

数据结构排序小结

排序类型小结 &#x1f4a6; 插入排序直接插入排序希尔排序 &#x1f4a6; 选择排序直接选择排序堆排序 &#x1f4a6; 交换排序冒泡排序快速排序&#x1f43e;霍尔版本补坑位版本前后指针版本非递归版本 &#x1f4a6; 归并排序递归版本非递归版本 &#x1f4a6; 性能测试 &am…

DDPM的一点笔记

1 Title Denoising Diffusion Probabilistic Models&#xff08;Jonathan Ho、Ajay Jain、Pieter Abbeel&#xff09; 2 Conclusion This paper present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models insp…

利用nginx宝塔免费防火墙实现禁止国外IP访问网站

本章教程&#xff0c;主要介绍&#xff0c;如何利用nginx宝塔面板中的插件免费防火墙&#xff0c;实现一键禁止国外IP访问网站。 目录 一、安装宝塔插件 二、 开启防火墙 一、安装宝塔插件 在宝塔面板中的软件商店&#xff0c;搜索防火墙关键词&#xff0c;找到Nginx免费防火…

java日志框架总结(三 、Log4j日志框架)

一、简介 Log4j ( Logger For Java ) , Java 日志的记录包。 官方网站 。Log4j 是 Apache 的一个开源项目&#xff0c; 为Java提供了日志记录功能。能够让程序员非常方便的记录日志&#xff0c; 并且提供了多种适配方式&#xff0c;能满足各种需求。 使用Log4j 只需要导入一个…

第四篇:怎么写express的路由(接口+请求)

&#x1f3ac; 江城开朗的豌豆&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 &#x1f4dd; 个人网站 :《 江城开朗的豌豆&#x1fadb; 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 &#x1f4d8; 引言&#xff1a; &#x1f4…

python在线聊天室(带聊天保存)

python Socket在线聊天室(带聊天保存) 需求功能 1.聊天信息保存功能(服务端会把信息保存到一个txt里面) 2.使用pyqt5框架作为一个可视化界面 3.具备一个服务端和多个客户端的功能 4.具备离线加入黑名单(离线踢出) 5.具备在线加入黑名单(在线加入黑名单被踢出) 6.具备群聊功能…

无际线复选框

效果演示 实现了一个网格布局&#xff0c;其中每个网格是一个复选框&#xff0c;可以选择是否显示。每个复选框都有一个漂浮的天花板&#xff0c;表示它是一个房间的天花板。每个房间的天花板都有一个不同的形状和颜色&#xff0c;分别对应不同的房间。整个页面的背景是一个由两…

0127-2-Vue深入学习5—Vue-Router路由模式

1、Vue-Router三种路由模式&#xff1a; hash&#xff1a;#️⃣使用URL hash 值来做路由&#xff0c;支持所有路由器&#xff1b;history:&#x1f4d6;依赖HTML5 History API和服务器配置&#xff1b;abstract:⛓支持所有JS运行环境&#xff0c;Node.js服务端&#xff1b; 1.1…

安全防御{第三次作业(在第二次作业上添加点需求)}

目录 需求&#xff1a; 拓扑图&#xff1a; 注意&#xff1a;先打开防火墙web界面&#xff0c;在此不做演示 1.要求一&#xff1a;&#xff0c;生产区在工作时间内可以访问服务器区&#xff0c;仅可以访问http服务器 2.要求二&#xff1a;办公区全天可以访问服务器区&#…

使用一个定时器(timer_fd)管理多个定时事件

使用一个定时器(timer_fd)管理多个定时事件 使用 timerfd_xxx 系列函数可以很方便的与 select、poll、epoll 等IO复用函数相结合&#xff0c;实现基于事件的定时器功能。大体上有两种实现思路&#xff1a; 为每个定时事件创建一个 timer_fd&#xff0c;绑定对应的定时回调函数…

考研C语言刷题基础篇之分支循环结构基础(二)

目录 第一题分数求和 第二题&#xff1a;求10 个整数中最大值 第三题&#xff1a;在屏幕上输出9*9乘法口诀表 第四题&#xff1a;写一个代码&#xff1a;打印100~200之间的素数 第五题&#xff1a;求斐波那契数的第N个数 斐波那契数的概念&#xff1a;前两个数相加等于第三…

Objective-C方法的声明实现及调用

1.无参数的方法 1)声明 a.位置&#xff1a;在interface括弧的外面 b.语法&#xff1a; - (返回值类型)方法名称; interface Person : NSObject -(void) run; end 2)实现 a.位置&#xff1a;在implementation中实现 b.语法&#xff1a;加大括弧将方法实现的代码写在大括孤之中 …

Unity Mask合批情况验证

1.首先是两个Mask完全重合的情况下 每张图片使用的image都来自同一个图集 发现彼此之间是没有合批的&#xff0c;但是每个Mask内部是实现了合批的 经过计算此种情况的visiableList&#xff1a;mask1&#xff0c;IM1&#xff0c;IM2&#xff0c;mask2&#xff0c;IM3&#xf…

NoSQL基本内容

第一章 NoSQL 1.1 什么是NoSQL NoSQL&#xff08;Not Only SQL&#xff09;即不仅仅是SQL&#xff0c;泛指非关系型的数据库&#xff0c;它可以作为关系型数据库的良好补充。随着互联网web2.0网站的兴起&#xff0c;非关系型的数据库现在成了一个极其热门的新领域&#xff0c;…