#include <iostream>
#include <string>
#include <tuple>  
#include <utility>  
#include <array>  
#include <string>  
template<char...>
struct STRING 
{
};
template<typename>
struct STRING_LITERAL;
template<char... S>
struct STRING_LITERAL<STRING<S...>> 
{
  static const char s[sizeof...(S)+1];
};
template<char... S>
const char STRING_LITERAL<STRING<S...>>::s[sizeof...(S)+1] = {S..., 0};
template<typename>
struct MOD;
template<>
struct MOD<unsigned char> 
{
  using TYPE = STRING<'h', 'h', 'u'>;
};
template<>
struct MOD<signed char> 
{
  using TYPE = STRING<'h', 'h', 'u'>;
};
template<>
struct MOD<unsigned short> 
{
  using TYPE = STRING<'h', 'u'>;
};
template<typename, typename>
struct CONCAT;
template<char... S1, char... S2>
struct CONCAT<STRING<S1...>, STRING<S2...>> 
{
  using TYPE = STRING<S1..., S2...>;
};
template<char...>
struct CONVERT;
template<>
struct CONVERT<> {
  using TYPE = STRING<>;
};
template<char... S>
struct CONVERT<'`', '`', S...> 
{
  using TYPE = typename CONCAT<STRING<'`'>, typename CONVERT<S...>::TYPE>::TYPE;
};
template<char... S>
struct CONVERT<'`', '8', 'u', S...> 
{
  using TYPE = typename CONCAT<typename MOD<uint8_t>::TYPE, typename CONVERT<S...>::TYPE>::TYPE;
};
template<char... S>
struct CONVERT<'`', '8', 'd', S...> 
{
  using TYPE = typename CONCAT<typename MOD<int8_t>::TYPE, typename CONVERT<S...>::TYPE>::TYPE;
};
template<char C, char... S>
struct CONVERT<C, S...> 
{
  using TYPE = typename CONCAT<STRING<C>, typename CONVERT<S...>::TYPE>::TYPE;
};
template<typename, typename>
struct MAKE_STRING;
template<typename S, template<typename U, U...> class T, typename U, U... I>
struct MAKE_STRING<S, T<U, I...>> 
{
  using TYPE = typename CONVERT<S{}.s[I]...>::TYPE;
};
template<typename S>
using FORMAT_STRING = STRING_LITERAL<typename MAKE_STRING<S, std::make_index_sequence<sizeof(S)-1>>::TYPE>;
#define FORMAT(str) ({ struct S { const char s[sizeof(str)] = (str); }; FORMAT_STRING<S>::s;})
int main()
{
  uint8_t x = 100;
  printf(FORMAT("``%`8u\n"), x);
  
}

printf 整数类型都用 uint8_t的更多相关文章

  1. C/C++中有关字长与平台无关的整数类型

    在C/C++中,整型的长度跟编译器相关,编译器的实现取决于CPU. 比如TC++是DOS16下的应用程序,DOS16是16位的操作系统,所以TC++中sizeof(int)==16:同理win32中s ...

  2. mysql int 整数类型 解释显示宽度 和 存储宽度

    存储宽度 是实际存储记录宽度 存储宽度默认是写死的,就算修改宽度也改变不了,改变的是显示宽度 ============有符号和无符号int============= 创建一个 无符号的 int 整数类 ...

  3. [C] zlstdint(让VC、TC等编译器自动兼容C99的整数类型)V1.0。支持Turbo C++ 3等DOS下的编译器

    作者:zyl910 以前我曾为了让VC++等编译器支持C99的整数类型,便编写了c99int库来智能处理(http://www.cnblogs.com/zyl910/p/c99int_v102.htm ...

  4. C语言-整数类型

    C语言-整数类型 整数类型 Reg为寄存器 字长,是说这个寄存器是多少宽的,每个寄存器可以表示32bit数据,也是说CPU与RAM每一次传递的数据也是32bit 计算机内部一切都是二进制 所有的类型, ...

  5. 3.2 Go整数类型

    1. Go整数类型 Go语言的数值类型包含不同大小的整数型.浮点数和负数,每种数值类型都有大小范围以及正负符号. 官方文档解释数据类型 int类型中哪些支持负数 有符号(负号):int8 int16 ...

  6. [C] c99int(让VC等编译器自动兼容C99的整数类型)V1.02。源码托管到github、添加CMake编译配置文件、使用doxygen规范注释

    新版本—— http://www.cnblogs.com/zyl910/p/zlstdint_v100.html[C] zlstdint(让VC.TC等编译器自动兼容C99的整数类型)V1.0.支持T ...

  7. java中整数类型(short int long)的存储方式

    在java中的整数类型有四种,分别是 byte  short int long 其中byte只有一个字节 0或1,在此不详细讲解. 其他的三种类型如下: 1.基本类型:short 二进制位数:16包装 ...

  8. [改善Java代码]用整数类型处理货币

    建议22:用整数类型处理货币. public class Client { public static void main(String[] args) { System.out.println(&q ...

  9. 第4章 类型基础 -- 4.1 所有类型都从System.Object派生

    4.1 所有类型都从System.Object派生 “运行时”要求每个类型最终都从System.Object类型派生. 由于所有类型最终都从System.Object派生,所以每个类型的每个对象都保证 ...

随机推荐

  1. 日志:using the Connector/J connection property 'autoReconnect=true' to avoid this problem

    com.mysql.jdbc.CommunicationsException: The last packet successfully received from the server was581 ...

  2. css基本设置

    css引入方式: 头部引入:在HTML页面头部编写程序(一般用在访问量大的网页上) 标签内引入:在标签内直接写样式(优先级最高,但难于维护,会沉积大量代码) 外部引入:用link标签引入(常用 ,维护 ...

  3. 7、provider: SQL 网络接口, error: 26 - 定位指定的服务器/实例时出错

    在建立与服务器的连接时出错.在连接到 SQL Server 2005 时,在默认的设置下 SQL Server 不允许进行远程连接可能会导致此失败.(provider: SQL 网络接口, error ...

  4. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

  5. 分享一些DICOM数据下载网站

    医院的DICOM数据轻易不让拷出来,所以这里列出一些医学数据,但不局限于DICOM数据网址,供大家下载. 斯坦福大学体数据库(RAW DATA) http://graphics.stanford.ed ...

  6. 微信公众号红包接口开发PHP开发 CA证书出错,请登陆微信支付商户平台下载证书

    微信红包接口调试过程中一直提示“CA证书出错,请登陆微信支付商户平台下载证书”,经反复调试,大致解决方法如下: 1.首先确保CA证书的路径是否正确,一定得是绝对路径,因为是PHP开发的,这里需要三个p ...

  7. 我对git认识

        Git --- The stupid content tracker, 傻瓜内容跟踪器.Linus Torvalds 是这样给我们介绍 Git 的. Git 是用于 Linux内核开发的版本控 ...

  8. Scrolliview

    package com.example.scrollview; import android.os.Bundle;import android.app.Activity;import android. ...

  9. NSLog 自定义 屏蔽

    1.如何自定义NSLog呢? 直接在工程的XXX_Prefix.pch中加入以下语句(就相当于在全局中定义了)#define NSLog NSLog(@"#%s##%d#",str ...

  10. c# 映射对比测试

    c#  映射对比测试(测试对象,测试案例,测试结果) 测试组件对象: TinyMapper-EmitMapper-AutoMapper-NLiteMapper-Handwritten 对比测试案例: ...