转自:http://blog.csdn.net/fivedoumi/article/details/7077504



d,lx,ld,,lu,这几个都是输出32位的

hd,hx,hu,这几个都是输出16位数据的,

hhd,hhx,hhu,这几个都是输出8位的,

lld,ll,llu,llx,这几个都是输出64位的,





printf( "%llu ",.....)

%llu   是64位无符号

%llx才是64位16进制数

 

Dev-C++下基本数据类型学习小结

环境: Dev-C++ 4.9.6.0 (gcc/mingw32), 使用-Wall编译选项

基本类型包括字节型(char)、整型(int)和浮点型(float/double)。

定义基本类型变量时,可以使用符号属性signed、unsigned(对于char、int),和长度属性short、long(对

于int、double)对变量的取值区间和精度进行说明。

下面列举了Dev-C++下基本类型所占位数和取值范围:

符号属性    长度属性    基本型    所占位数    取值范围      输入符举例     输出符举例

--           --         char        8        -2^7 ~2^7-1       %c         %c、%d、%u

signed       --         char        8        -2^7 ~2^7-1       %c         %c、%d、%u

unsigned     --         char        8        0 ~2^8-1          %c         %c、%d、%u

[signed]     short      [int]       16       -2^15 ~2^15-1             %hd

unsigned     short      [int]       16       0 ~2^16-1            %hu、%ho、%hx

[signed]     --          int        32       -2^31 ~2^31-1             %d

unsigned     --         [int]       32       0 ~2^32-1             %u、%o、%x

[signed]     long       [int]       32       -2^31 ~2^31-1             %ld

unsigned     long       [int]       32       0 ~2^32-1            %lu、%lo、%lx

[signed]     long long  [int]       64       -2^63 ~2^63-1            %I64d

unsigned     long long  [int]       64       0 ~2^64-1         %I64u、%I64o、%I64x

--           --         float       32      +/-3.40282e+038        %f、%e、%g

--           --         double      64      +/- 1.79769e+308 %lf、%le、%lg   %f、%e、%g

--           long       double      96      +/-1.79769e+308       %Lf、%Le、%Lg









几点说明:

1. 注意! 表中的每一行,代表一种基本类型。“[]”代表可省略。

例如:char、signed char、unsigned char是三种互不相同的类型;

int、short、long也是三种互不相同的类型。

可以使用C++的函数重载特性进行验证,如:

void Func(char ch) {}

void Func(signed char ch) {}

void Func(unsigned char ch) {}

是三个不同的函数。









2. char/signed char/unsigned char型数据长度为1字节;

char为有符号型,但与signed char是不同的类型。

注意! 并不是所有编译器都这样处理,char型数据长度不一定为1字节,char也不一定为有符号型。









3. 将char/signed char转换为int时,会对最高符号位1进行扩展,从而造成运算问题。

所以,如果要处理的数据中存在字节值大于127的情况,使用unsigned char较为妥当。

程序中若涉及位运算,也应该使用unsigned型变量。









4. char/signed char/unsigned char输出时,使用格式符%c(按字符方式);

或使用%d、%u、%x/%X、%o,按整数方式输出;

输入时,应使用%c,若使用整数方式,Dev-C++会给出警告,不建议这样使用。









5. int的长度,是16位还是32位,与编译器字长有关。

16位编译器(如TC使用的编译器)下,int为16位;32位编译器(如VC使用的编译器cl.exe)下,int为32

位。

6. 整型数据可以使用%d(有符号10进制)、%o(无符号8进制)或%x/%X(无符号16进制)方式输入输出。

而格式符%u,表示unsigned,即无符号10进制方式。









7. 整型前缀h表示short,l表示long。

输入输出short/unsigned short时,不建议直接使用int的格式符%d/%u等,要加前缀h。

这个习惯性错误,来源于TC。TC下,int的长度和默认符号属性,都与short一致,

于是就把这两种类型当成是相同的,都用int方式进行输入输出。









8. 关于long long类型的输入输出:

"%lld"和"%llu"是linux下gcc/g++用于long long int类型(64bits)输入输出的格式符。

而"%I64d"和"%I64u"则是Microsoft VC++库里用于输入输出__int64类型的格式说明。

Dev-C++使用的编译器是Mingw32,Mingw32是x86-win32gcc子项目之一,编译器核心还是linux下的gcc。

进行函数参数类型检查的是在编译阶段,gcc编译器对格式字符串进行检查,显然它不认得"%I64d",

所以将给出警告“unknown conversion type character `I' informat”。对于"%lld"和"%llu",gcc理

所当然地接受了。

Mingw32在编译期间使用gcc的规则检查语法,在连接和运行时使用的却是Microsoft库。

这个库里的printf和scanf函数当然不认识linuxgcc下"%lld"和"%llu",但对"%I64d"和"%I64u",它则是

乐意接受,并能正常工作的。









9. 浮点型数据输入时可使用%f、%e/%E或%g/%G,scanf会根据输入数据形式,自动处理。

输出时可使用%f(普通方式)、%e/%E(指数方式)或%g/%G(自动选择)。









10. 浮点参数压栈的规则:float(4 字节)类型扩展成double(8 字节)入栈。

C 打印格式小记的更多相关文章

  1. 在sap系统设置纸张打印格式(针式打印机)

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮——>选 ...

  2. Android打印机--小票打印格式及模板设置

    小票打印就是向打印设备发送控制打印格式的指令集,而这些打印格式须要去查询相应打印机的API文档,这里我把经常使用的api给封装了一下 文字对齐方式 打印字体大小 字体是否加粗 打印二维码 打印条形码 ...

  3. Smartforms 设置纸张打印格式

    在sap做一个打印报表,要先设置一个纸张打印格式,下面以工厂中常用来打印的针孔纸为例,在sap设置该纸张的打印格式,以用于报表: 1.运行事务代码SPAD:选择工具栏上的[完全管理]按钮——>选 ...

  4. print,cat打印格式及字符串引号格式,去掉字符串空格 in R

    print 函数的打印格式: ##no quote print out > x <- letters[1:5] > print(x,quote=F,);print(x,quote=T ...

  5. 【ABAP系列】SAP Smartforms 设置纸张打印格式

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP Smartforms 设 ...

  6. 关于str的打印格式

    实际上一般的打印格式应该是这样的: %[(keyname)][flags][width][.precision]typecode (1) keyname: 用于打印Dict类型时做索引; (2) fl ...

  7. c 中打印格式%g

    C语言中打印float或double类型最常用的是%f格式,最近看书时看到有使用%g格式打印. %f  表示按浮点数的格式打印. 小数点后固定6位 %e 表示以指数形式的浮点数格式输出. %g 表示自 ...

  8. SMARTFORMS自定义打印格式

    [转自 http://lz357502668.blog.163.com/blog/static/16496743201272155135570/] 在sap的打印开发中经常需要自定义纸张,具体步骤如下 ...

  9. 3D打印格式STL

    STL格式及其转换 近期接触了3D打印的一些东西,也制作了一个vrml转stl的插件,对该领域多了一些认识. 目前尚没有打印机直接支持stl.obj等格式,在打印之前需使用厂家提供的软件将stl等格式 ...

随机推荐

  1. Java程序员必须掌握的线程知识-Callable和Future

    Callable和Future出现的原因 创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口. 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果. 如果需 ...

  2. Android简易实战教程--第二十七话《自定义View入门案例之开关按钮详细分析》

    转载此博客请注明出处点击打开链接       http://blog.csdn.net/qq_32059827/article/details/52444145 对于自定义view,可能是一个比较大的 ...

  3. SYBASE的select into与insert into使用和区别

    对于表的部分或全部字段的复制,Sybase数据库提供了两种方式:select into和insert into. select into: 语法:select  value1, value2, val ...

  4. shell脚本实现冒泡排序

    手动输入一行字符串,并对其排序. 脚本如下: #!/bin/bash #a test about sort echo "please input a number list" re ...

  5. 2014年7月10日,我人生的最重要Upgrade

    2014年7月10日上午,我的小公主顺利的出生于国妇婴.之前各种紧张,各种不安.在不安中的前天晚上陪着来上海的董博士于方先生在人民广场聚餐.大家都是工作几年的,各种感慨,对于工作中的零零种种.还有对未 ...

  6. Android的自动完成文本框-android学习之旅(二十六)

    AutoComplicatedTextView简介 AutoComplicatedTextView是从EditText派生出来的,可以使用EditText的所有的属性.当用户输入一定的内容后,会有提示 ...

  7. 基于xml 实现动态加载权限功能树列表---EFSFrame企业级开发架构

    在学习EFSFrame框架的过程中,感触最深的就是通过xml来实现前台与后台数据的交互,页面设计灵活,不用管后台如何写的,前台与后台的交互唯一的交互通道都是xml,在我们需要添加页面.添加规定的格式的 ...

  8. RTB--Real TimeBidding模式的互联网广告(实时竞价的广告投放)

    RTB(real time bidding)实时竞价允许广告买家根据活动目标.目标人群以及费用门槛等因素对每一个广告及每次广告展示的费用进行竞价.竞价成功后获得广告展示机会,在展示位置上展示广告. 其 ...

  9. Android进阶(十一)Android系统架构讲解

    如果说一个成功男人的背后会有一个默默支持的女人的话,那么一个优越稳定的平台背后必有一个成熟的系统架构所支撑着.那么,Android的系统架构是怎么样的呢?从下图我们可以从整体上有个大致的了解(图片来源 ...

  10. 理解WebKit和Chromium: Android 4.4 上的Chromium WebView

    转载请注明原文地址:http://blog.csdn.net/milado_nju ## 概述 相信读者已经注意到了,在最新的Android 4.4 Kitkat版本中,原本基于Android Web ...