C语言拾遗——inttypes.h
今天偶然间看到这个头文件inttypes,好奇有什么用,去找度娘玩了一波,发现这头文件挺有意思的。
这个头文件适配于C99标准,它提供整数输入的各种进制转换的宏,这是在Ubuntu上扣下来的代码(windows里我没找到放在哪)嗯~ o(* ̄▽ ̄*)o我拿VScode找到了……所以划掉
不完整的
Ubuntu:
- //这里应该是10进制的宏
- /* Decimal notation. */
- # define PRId8 "d"
- # define PRId16 "d"
- # define PRId32 "d"
- # define PRId64 __PRI64_PREFIX "d"
- # define PRIdLEAST8 "d"
- # define PRIdLEAST16 "d"
- # define PRIdLEAST32 "d"
- # define PRIdLEAST64 __PRI64_PREFIX "d"
- # define PRIdFAST8 "d"
- # define PRIdFAST16 __PRIPTR_PREFIX "d"
- # define PRIdFAST32 __PRIPTR_PREFIX "d"
- # define PRIdFAST64 __PRI64_PREFIX "d"
- # define PRIi8 "i"
- # define PRIi16 "i"
- # define PRIi32 "i"
- # define PRIi64 __PRI64_PREFIX "i"
- # define PRIiLEAST8 "i"
- # define PRIiLEAST16 "i"
- # define PRIiLEAST32 "i"
- # define PRIiLEAST64 __PRI64_PREFIX "i"
- # define PRIiFAST8 "i"
- # define PRIiFAST16 __PRIPTR_PREFIX "i"
- # define PRIiFAST32 __PRIPTR_PREFIX "i"
- # define PRIiFAST64 __PRI64_PREFIX "i"
- //感觉这里是8进制的宏
- /* Octal notation. */
- # define PRIo8 "o"
- # define PRIo16 "o"
- # define PRIo32 "o"
- # define PRIo64 __PRI64_PREFIX "o"
- # define PRIoLEAST8 "o"
- # define PRIoLEAST16 "o"
- # define PRIoLEAST32 "o"
- # define PRIoLEAST64 __PRI64_PREFIX "o"
- # define PRIoFAST8 "o"
- # define PRIoFAST16 __PRIPTR_PREFIX "o"
- # define PRIoFAST32 __PRIPTR_PREFIX "o"
- # define PRIoFAST64 __PRI64_PREFIX "o"
- //这里因该是无符号的宏
- /* Unsigned integers. */
- # define PRIu8 "u"
- # define PRIu16 "u"
- # define PRIu32 "u"
- # define PRIu64 __PRI64_PREFIX "u"
- # define PRIuLEAST8 "u"
- # define PRIuLEAST16 "u"
- # define PRIuLEAST32 "u"
- # define PRIuLEAST64 __PRI64_PREFIX "u"
- # define PRIuFAST8 "u"
- # define PRIuFAST16 __PRIPTR_PREFIX "u"
- # define PRIuFAST32 __PRIPTR_PREFIX "u"
- # define PRIuFAST64 __PRI64_PREFIX "u"
- //这里因该是小写16进制
- /* lowercase hexadecimal notation. */
- # define PRIx8 "x"
- # define PRIx16 "x"
- # define PRIx32 "x"
- # define PRIx64 __PRI64_PREFIX "x"
- # define PRIxLEAST8 "x"
- # define PRIxLEAST16 "x"
- # define PRIxLEAST32 "x"
- # define PRIxLEAST64 __PRI64_PREFIX "x"
- # define PRIxFAST8 "x"
- # define PRIxFAST16 __PRIPTR_PREFIX "x"
- # define PRIxFAST32 __PRIPTR_PREFIX "x"
- # define PRIxFAST64 __PRI64_PREFIX "x"
- //这里因该是大写16进制
- /* UPPERCASE hexadecimal notation. */
- # define PRIX8 "X"
- # define PRIX16 "X"
- # define PRIX32 "X"
- # define PRIX64 __PRI64_PREFIX "X"
- # define PRIXLEAST8 "X"
- # define PRIXLEAST16 "X"
- # define PRIXLEAST32 "X"
- # define PRIXLEAST64 __PRI64_PREFIX "X"
- # define PRIXFAST8 "X"
- # define PRIXFAST16 __PRIPTR_PREFIX "X"
- # define PRIXFAST32 __PRIPTR_PREFIX "X"
- # define PRIXFAST64 __PRI64_PREFIX "X"
Windows:
- /* fprintf macros for signed types */
- #define PRId8 "d"
- #define PRId16 "d"
- #define PRId32 "d"
- #define PRId64 "I64d"
- #define PRIdLEAST8 "d"
- #define PRIdLEAST16 "d"
- #define PRIdLEAST32 "d"
- #define PRIdLEAST64 "I64d"
- #define PRIdFAST8 "d"
- #define PRIdFAST16 "d"
- #define PRIdFAST32 "d"
- #define PRIdFAST64 "I64d"
- #define PRIdMAX "I64d"
- #define PRIdPTR "d"
- #define PRIi8 "i"
- #define PRIi16 "i"
- #define PRIi32 "i"
- #define PRIi64 "I64i"
- #define PRIiLEAST8 "i"
- #define PRIiLEAST16 "i"
- #define PRIiLEAST32 "i"
- #define PRIiLEAST64 "I64i"
- #define PRIiFAST8 "i"
- #define PRIiFAST16 "i"
- #define PRIiFAST32 "i"
- #define PRIiFAST64 "I64i"
- #define PRIiMAX "I64i"
- #define PRIiPTR "i"
- #define PRIo8 "o"
- #define PRIo16 "o"
- #define PRIo32 "o"
- #define PRIo64 "I64o"
- #define PRIoLEAST8 "o"
- #define PRIoLEAST16 "o"
- #define PRIoLEAST32 "o"
- #define PRIoLEAST64 "I64o"
- #define PRIoFAST8 "o"
- #define PRIoFAST16 "o"
- #define PRIoFAST32 "o"
- #define PRIoFAST64 "I64o"
- #define PRIoMAX "I64o"
- #define PRIoPTR "o"
- /* fprintf macros for unsigned types */
- #define PRIu8 "u"
- #define PRIu16 "u"
- #define PRIu32 "u"
- #define PRIu64 "I64u"
- #define PRIuLEAST8 "u"
- #define PRIuLEAST16 "u"
- #define PRIuLEAST32 "u"
- #define PRIuLEAST64 "I64u"
- #define PRIuFAST8 "u"
- #define PRIuFAST16 "u"
- #define PRIuFAST32 "u"
- #define PRIuFAST64 "I64u"
- #define PRIuMAX "I64u"
- #define PRIuPTR "u"
- #define PRIx8 "x"
- #define PRIx16 "x"
- #define PRIx32 "x"
- #define PRIx64 "I64x"
- #define PRIxLEAST8 "x"
- #define PRIxLEAST16 "x"
- #define PRIxLEAST32 "x"
- #define PRIxLEAST64 "I64x"
- #define PRIxFAST8 "x"
- #define PRIxFAST16 "x"
- #define PRIxFAST32 "x"
- #define PRIxFAST64 "I64x"
- #define PRIxMAX "I64x"
- #define PRIxPTR "x"
- #define PRIX8 "X"
- #define PRIX16 "X"
- #define PRIX32 "X"
- #define PRIX64 "I64X"
- #define PRIXLEAST8 "X"
- #define PRIXLEAST16 "X"
- #define PRIXLEAST32 "X"
- #define PRIXLEAST64 "I64X"
- #define PRIXFAST8 "X"
- #define PRIXFAST16 "X"
- #define PRIXFAST32 "X"
- #define PRIXFAST64 "I64X"
- #define PRIXMAX "I64X"
- #define PRIXPTR "X"
- /*
- * fscanf macros for signed int types
- * NOTE: if 32-bit int is used for int_fast8_t and int_fast16_t
- * (see stdint.h, 7.18.1.3), FAST8 and FAST16 should have
- * no length identifiers
- */
- #define SCNd16 "hd"
- #define SCNd32 "d"
- #define SCNd64 "I64d"
- #define SCNdLEAST16 "hd"
- #define SCNdLEAST32 "d"
- #define SCNdLEAST64 "I64d"
- #define SCNdFAST16 "hd"
- #define SCNdFAST32 "d"
- #define SCNdFAST64 "I64d"
- #define SCNdMAX "I64d"
- #define SCNdPTR "d"
- #define SCNi16 "hi"
- #define SCNi32 "i"
- #define SCNi64 "I64i"
- #define SCNiLEAST16 "hi"
- #define SCNiLEAST32 "i"
- #define SCNiLEAST64 "I64i"
- #define SCNiFAST16 "hi"
- #define SCNiFAST32 "i"
- #define SCNiFAST64 "I64i"
- #define SCNiMAX "I64i"
- #define SCNiPTR "i"
- #define SCNo16 "ho"
- #define SCNo32 "o"
- #define SCNo64 "I64o"
- #define SCNoLEAST16 "ho"
- #define SCNoLEAST32 "o"
- #define SCNoLEAST64 "I64o"
- #define SCNoFAST16 "ho"
- #define SCNoFAST32 "o"
- #define SCNoFAST64 "I64o"
- #define SCNoMAX "I64o"
- #define SCNoPTR "o"
- #define SCNx16 "hx"
- #define SCNx32 "x"
- #define SCNx64 "I64x"
- #define SCNxLEAST16 "hx"
- #define SCNxLEAST32 "x"
- #define SCNxLEAST64 "I64x"
- #define SCNxFAST16 "hx"
- #define SCNxFAST32 "x"
- #define SCNxFAST64 "I64x"
- #define SCNxMAX "I64x"
- #define SCNxPTR "x"
- /* fscanf macros for unsigned int types */
- //感觉这里是无符号
- #define SCNu16 "hu"
- #define SCNu32 "u"
- #define SCNu64 "I64u"
- #define SCNuLEAST16 "hu"
- #define SCNuLEAST32 "u"
- #define SCNuLEAST64 "I64u"
- #define SCNuFAST16 "hu"
- #define SCNuFAST32 "u"
- #define SCNuFAST64 "I64u"
- #define SCNuMAX "I64u"
- #define SCNuPTR "u"
我感觉gcc这个源码没有Ubuntu哪个那么容易看懂,管他呢……用法是一样的
百度上的例子:
PRIi8、PRIu8、PRIo8以及PRIx8,其中i为有符号,u为无符号,o为8进制以及x为16进制。
百度上的代码:
- #include <stdio.h>
- #include <inttypes.h>
- int main() {
- int a = ;
- printf("a=%"PRIu64"\n", a);
- return ;
- }
输出是啥我不太明白,感觉像是按位把int 拓展成了long long 导致出现了一个特别奇怪的数
我做了其他的测试
- int a = ;
- printf("a=%"PRx8"\n", a);
输出的是 f
- int a = 0xff;
- printf("a=%"PRu8"\n", a);
输出的是255
嘿嘿,真是个进制转换的神器,不过好像没有二进制,而且只有常用的8和16,其他的还得自己写,这个库里还有其他功能,我先研究研究,日后再更新。(现在主要是防止自己忘记)
学习不易,诸君共勉!
C语言拾遗——inttypes.h的更多相关文章
- C语言拾遗——strtok
C语言拾遗——strtok 今天刷PAT的时候用到了这个strtok函数,顺手就记录一下 strtok函数包含于头文件string.h 语法:char *strtok( char *str1, con ...
- 使用ACE遇到无法打开包括文件:“inttypes.h”的解决方案
本来想使用ACE_Get_Opt类来做一个命令行解析的功能,但是当项目中配置好了ACE库的路径后,编译时遇到"无法打开包括文件: inttypes.h : No such file or d ...
- ffmpeg遇到inttypes.h和UINT64_C
http://blog.csdn.net/cll131421/article/details/7763657 编译过程:错误一:无法打开包括文件:“inttypes.h”: No such file ...
- ffmpeg “inttypes.h”: No such file or directory
编译过程:错误一:无法打开包括文件:“inttypes.h”: No such file or directory解决方法:删除之,并在其之前添加如下代码: #if defined(WIN32) &a ...
- C语言拾遗(一)
越来越体会到C语言的重要性,不管是在计算机底层的理解上,还是在算法数据结构上,所以遂决定重新拾起C语言,不定期更新一些知识点. 推荐博客:http://blog.csdn.net/itcastcpp ...
- C语言.c和.h
简单的说其实要理解C文件与头文件(即.h)有什么不同之处,首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程: 1.预处理阶段 2.词法与语法分析阶段 3.编译阶段,首先编译成 ...
- C 语言项目中.h文件和.c文件的关系
http://blog.csdn.net/xingkong_678/article/details/38639847 关于两者以前的关系,要从N年以前说起了~ long long ago,once a ...
- windows+vs2017+C语言 引入mysql.h对MYSQL数据库的操作
mysql.h文件用作VS开发用,用来连接数据库.没有mysql.h文件,就无法调用mysql的东西 也无法用C语言对MYSQL操作. 一般安装了mysql之后,这个文件就在mysql目录的inclu ...
- C语言拾遗
1. 没C++那么恶心的const C语言中的const修饰符用于修饰一个变量是const属性的.被C语言的const修饰的变量具有只读属性,并且不能被修改. const修饰的变量 != 常量,con ...
随机推荐
- 启动storm任务时,异常提示
启动storm任务时,异常提示: 14182 [NIOServerCxn.Factory:0.0.0.0/0.0.0.0:2000] WARN o.a.s.s.o.a.z.s.NIOServerCnx ...
- 「Luogu P3072 [USACO13FEB]周长Perimeter」
USACO的题目,感觉还是挺神奇的. 前置芝士 DFS(BFS)遍历:用来搜索(因为DFS好写,本文以DFS为准还不是因为作者懒) STL中的set(map)的基本用法:数据很大,不能直接存. 具体做 ...
- 28 最小的K个数
题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路: 解法1:对于小规模数据,可以采用类似前题的快速排序思路 ...
- 修剪草坪 HYSBZ - 2442
在一年前赢得了小镇的最佳草坪比赛后,FJ变得很懒,再也没有修剪过草坪.现在,新一轮的最佳草坪比赛又开始了,FJ希望能够再次夺冠. 然而,FJ的草坪非常脏乱,因此,FJ只能够让他的奶牛来完成这项工作.F ...
- php 实现店铺装修4
/** * @title 发布装修的店铺 * @example FlagShipShopDecorate.fabu? 调试参数:{"username":"17721355 ...
- Core Data 基本数据操作 增删改查 排序
所有操作都基于Core Data框架相关 API,工程需要添加CoreData.framework支持 1.增 NSEntityDescription insertNewObjectForEntit ...
- Cadence套件:Capture + Allegro应用笔记
1.在Allegro中导入Netlist时,需要进行封装路径的设定: 在Setup->User Preference的Path->Library下面,设定所需封装文件(psm).焊盘文件( ...
- 十七 Ajax&校验用户名功能
Ajax: 即"Asynchronous JavaScript And XML", 异步JavaScript和XML , 是指一种创建的交互式页面应用的网页开发技术,它并不是新的技 ...
- (十二)微信小程序实现登陆页面+登陆逻辑
微信小程序实现登陆页面 实现上面两个页面 第一个页面 <view> <!-- 上侧部分 --> <view class="top-view"> ...
- SmartAssembly .net混淆后,无法找到部分类型
两种解决方式: 1,在vs项目引用中,COM 嵌入互操作类型, 全部设为false. 2, 在混淆选项中,排除所有 引有的 外部COM类