打印
[Atmel]

C语言中%d,%o,%f,%e,%x的意义

[复制链接]
50363|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ddllxxrr|  楼主 | 2015-1-20 13:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 ddllxxrr 于 2015-1-20 13:59 编辑

今天看程序看到一句如下:


printf"ID:[%X-%X-%X]\n\r"


里边的X可不常见那么它是做啥地呢????


原来如此:


格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。
格式字符有d,o,x,u,c,s,f,e,g等。

%d整型输出,%ld长整型输出,

%o以八进制数形式输出整数,

%x以十六进制数形式输出整数,

%u以十进制数输出unsigned型数据(无符号数)。

%c用来输出一个字符,

%s用来输出一个字符串,

%f用来输出实数,以小数形式输出,

%e以指数形式输出实数,

%g根据大小自动选f格式或e格式,且不输出无意义的零。

scanf(控制字符,地址列表)
格式字符的含义同printf函数,地址列表是由若干个地址组成的表列,可以是变量的地址,或字符串的首地址。如scanf("%d%c%s",&a,&b,str);










c语言中以16进制输出时%0x和%x有什么区别?
标准C语言库函数fprintf/printf格式字符串的转换说明形式是这样的:

%[标志][最小输出宽度][.精度][长度修正符]类型
方括号括起来是可选项。

标志是0或多个标志字符,可以是任意顺序,常用有以下几个:
  -  左对齐,缺省是右对齐。
+  带符号的值前面总是有个符号,也就是正数前面有+号,负数前面有-号。
0  输出值的宽度小于最小宽度的话,用0填充,缺省是用空格填充。

0是一个标志字符,意思就是用0填充


C语言%p的含义:

格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。
示例:
int i = 1;
printf("%p",&i);
相当于
int i = 1;
printf("0x%x",&i);
对于32位的指针,输出一般会是类似0xf0001234之类的结果。
%p存在的理由除了附加前缀输出的便利性以外,如LS所说,指针的大小是不确定的,由实现决定。根据地址空间的大小,一般有16位、32位、64位的指针。尽管目前32位平台上的指针一般全是32位的,但旧的一些平台上可能有多种长度的指针(例如非标准的near、far、huge修饰的pointer)混用,无法用%x、%lx、%hx、%llx(对应int、long、short、long long)中的任意一种保证能输出所有类型的指针。

相关帖子

沙发
huangxz| | 2015-1-20 13:37 | 只看该作者
不全啊,还有%p呢

使用特权

评论回复
板凳
ayb_ice| | 2015-1-20 13:47 | 只看该作者
字符串格式符

使用特权

评论回复
地板
ddllxxrr|  楼主 | 2015-1-20 13:54 | 只看该作者
huangxz 发表于 2015-1-20 13:37
不全啊,还有%p呢

还有%p???楼上知道地太多了

使用特权

评论回复
5
ddllxxrr|  楼主 | 2015-1-20 13:59 | 只看该作者
huangxz 发表于 2015-1-20 13:37
不全啊,还有%p呢

已经补充上去了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:http://shop34182318.taobao.com/ http://shop562064536.taobao.com

2398

主题

6956

帖子

67

粉丝