C语言中的%p和%x的区别

作者&投稿:父顺 (若有异议请与网页底部的电邮联系)
在c语言中 %p ,%d和%x 的区别是什么?~

%p 是以16进制的形式输出内存地址。
%x 也是以16进制的形式输出内存地址。
不过%p的输出字符为8个前2个为00。
%x只有6个。
%d 可以输出整数。
也可以以10进制的形式输出。
%d 是有符号。
%x 是无符号。
举个例子:
用8个2进制位表示-1为11111111转成无符号型就是2的9次方减1了。
%p是专用来处理指针的吧,而%x对打印的数据都可以,感觉差不多,就是用%p的时候打印出来都是8个数据的。
计算机存储的都是2进制,当然也可以用%d打印地址,打印指针,指针就是用来存放地址的
%u当然很大了,因为%d表示负数的时候(2进制)第1位是1。

%p 以16进制的形式输出内存地址,共8个字符,前2个为00
%p 用来输出 地址 用,而不是用来输出 数值 用,输出中的ABCDEF 大写

例如:
int x=2;
printf("%p",&x);

%x 用于输出无符号整数,默认,前面不加0。输出中的ABCDEF 小写

如果想加0
printf("%08x ",x);
printf("%08x",&x);

用哪种 输出格式,要同输出数据 相配,否则 可能出错。

也可以以10进制的形式输出指针地址:
printf("%ld",&x);

1、输出的类型不同:

%p用来输出指针的值、输出地址符。指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。而%x, %X 输出无符号以十六进制表示的整数。

2、输出的结果会有不同:

32位系统下寻址能力(地址空间)是4G Bytes(0~2^32-1)二进制表示长度为32bits(也就是4Bytes), unsigned int类型也正好如此取值,%p用来输出地址符时,结果是32位的。p 对应于指针类型,返回的值是指针的地址,以十六进制的形式来表示。

例如:Format("this is %p",p); 返回的是:this is 0012F548

扩展资料:

其它相关格式:

1、%d 十进制数,表示一个整型值,u 和d一样是整型值,但它是无符号的,而如果它对应的值是负的,则返回时是一个2的32次方减去这个负数的绝对值。

例如:Format("this is %u",-2);返回的是:this is 4294967294。

2、%f 对应浮点数。

3、e科学表示法,对应整型数和浮点数。

例如:Format("this is %e",-2.22);返回的是:this is -2.220000E+000

4、g 这个只能对应浮点型,且它会将值中多余的数去掉。

例如:Format("this is %g",02.200);返回的是:this is 2.2

参考资料来源:百度百科-printf()

参考资料来源:百度百科-指针

参考资料来源:百度百科-Format函数



16位和32位机 没区别
64位机 %p输出8字节 最多16位16进制数
%x输出按int 实际4字节,最多8位16进制数
也就是说 如果输出地址 用%x在64位机器上会出错。

%p为16进制数, 长度由当前操作系统决定, 32位系统长度就为32bit, 64位系统长度为64bit

%x为16进制数, 长度为32bit

格式控制符“%p”中的p是pointer(指针)的缩写。指针的值是语言实现(编译程序)相关的,但几乎所有实现中,指针的值都是一个表示地址空间中某个存储器单元的整数。printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x。
示例:
int i = 1;
printf("%p",&i);
相当于
int i = 1;
printf("0x%x",&i);
对于32位的指针,输出一般会是类似0xf0001234之类的结果。


C语言中 %p是什么输出限制符?
p=point 也就是用来输出指针的 格式为16进制。输出值为地址。用%p的好处是,可以根据系统位数,确定地址长度,而正确输出整体指针值。与%p最类似的是%x。 不过%x是针对int的,如果是64位系统,只能输出低32位。

C语言中的%p和%x的区别
16位和32位机 没区别 64位机 %p输出8字节 最多16位16进制数 x输出按int 实际4字节,最多8位16进制数 也就是说 如果输出地址 用%x在64位机器上会出错。

c语言中%X是什么意思
a,%A 读入一个浮点值(仅C99有效)c 读入一个字符 d 读入十进制整数 i 读入十进制,八进制,十六进制整数 o 读入八进制整数 x,%X 读入十六进制整数 s 读入一个字符串,遇空格、制表符或换行符结束。f,%F,%e,%E,%g,%G 用来输入实数,可以用小数形式或指数形式输入。p 读入一个指针 u 读入一个...

c语言中%X是什么意思
C语言中%X的意思是以十六进制数形式输出整数,类似%x的输出格式还有:1.%c:单个字符 2.%d:十进制整数 3.%f :十进制浮点数 4.%o:八进制数 5. %s :字符串 6.%u:无符号十进制数 7.%%:输出百分号

C语言中%d,%nd,%f,%lf,%c,%o,%x %e这个几个符号都表示什么?
。5、%e(%E)表示 浮点数指数输出[e-(E-)记数法]。6、%g(%G) 表示浮点数不显无意义的零"0"。7、%i表示有符号十进制整数(与%d相同)。8、%u表示无符号十进制整数。9、%o表示八进制整数 e.g. 0123。10、%x(%X)还是十六进制整数 e.g. 0x1234。11、%p 表示指针。12、%s表示字符串。

C语言 printf详解
在C语言中,printf函数是数据输出的核心工具,它通过格式化字符串来精确控制各种类型数据的显示方式。让我们一起深入探讨其强大的功能和用法。首先,让我们了解printf中的转换符号和标志。%a-%A用于十六进制浮点数,%c显示字符,%d-%i、%u-%x-%X分别处理整数、无符号整数和十六进制表示,%p输出内存地址,...

printf()函数有哪些用法呢?
1、%d 十进制有符号整数。2、%u 十进制无符号整数。3、%ld 输出long整数 。4、%s 字符串。5、%c 单个字符。6、%p 指针的值。7、%e 指数形式的浮点数。8、%x, %X 无符号以十六进制表示的整数。9、%0 无符号以八进制表示的整数。10、%g 自动选择合适的表示法。

C语言中的%d、%u、%p、%f、%lu...都是什么意思?
C语言常见的规定符(内容来自 https:\/\/www.runoob.com\/cprogramming\/c-function-printf.html )d  十进制有符号整数 u  十进制无符号整数 f  浮点数 s  字符串 c  单个字符 p  指针的值 e  指数形式的浮点数 x, %X  无符号以十六进制表示...

C语言中的各种百分号都代表什么意思
印出百分比符号,不转换。c 整数转成对应的 ASCII 字元。d 整数转成十进位。f 倍精确度数字转成浮点数。o 整数转成八进位。s 整数转成字符串。x 整数转成小写十六进位。X 整数转成大写十六进位。

Go 基础系列:17. 详解 20 个占位符
%x\/%X,十六进制表示,大小写不同。%p\/%#p,地址值,带或不带0x前缀。+,显示正负号,支持ASCII\/Unicode字符。-,右对齐并填充空格。0,前导0或特定格式前缀,如0x。' ',空格和字符间距的控制。%#q,安全转义字符串输出。举个例子,看看这些占位符在实际操作中的表现:数字格式化,如%05s会让"...

郸城县15521612784: C语言中的%p和%x的区别 -
熊园大活: 1、输出的类型不同: %p用来输出指针的值、输出地址符.指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数.而%x, %X 输出无符号以十六进制表示的整数. 2、输出的结果会有不同: 32位系统下寻...

郸城县15521612784: C语言中%p和%x的区别? -
熊园大活: %p:将一个指针值(即地址)转换为int型数打印输出,输出格式与%x相同 %x:将一个unsigned值转换为无符号十六进制数打印输出,默认精度1 因为%p打印的是地址值,所以默认精度是地址宽度.由上图可知,地址4个字节,即8个“半字节”,所以%p默认精度为8.又因为运行时地址值只有24位有效位,即6个“半字节”,所以前补两个0.%x默认精度1,不用补0.

郸城县15521612784: 在c语言中 %p ,%d和%x 的区别是什么? -
熊园大活: %p 是以16进制的形式输出内存地址. %x 也是以16进制的形式输出内存地址. 不过%p的输出字符为8个前2个为00. %x只有6个. %d 可以输出整数. 也可以以10进制的形式输出. %d 是有符号. %x 是无符号.举个例子: 用8个2进制位表示-1为11111111转成无符号型就是2的9次方减1了. %p是专用来处理指针的吧,而%x对打印的数据都可以,感觉差不多,就是用%p的时候打印出来都是8个数据的. 计算机存储的都是2进制,当然也可以用%d打印地址,打印指针,指针就是用来存放地址的 %u当然很大了,因为%d表示负数的时候(2进制)第1位是1.

郸城县15521612784: 在c语言中 %p ,%d和%x 的区别%p 是以16进制的形式输 -
熊园大活: %p用来输出指针 %x用来输入int 类型. 二者都是16进制值输出如果是32位系统 那么没区别如果是64位系统 那么 %p会输出8字节数据. 而%x只能输出4字节数据. 也就是说 32位系统 %p等效于%x 64位系统 %p等效于%lx

郸城县15521612784: 在c语言中 %p ,%d和%x 的区别 -
熊园大活: %x不要前导0,也就说前面的0会被自动去掉 也可以用%08x打印出来跟%p一样的 实际上是一样的,不过%p是专用来处理指针的吧,而%x对打印的数据都可以,感觉差不多,就是用%p的时候打印出来都是8个数据的 计算机存储的都是2进制,当然也可以用%d打印地址,打印指针,指针就是用来存放地址的 地址需要符号么-_-# %u当然很大了,因为%d表示负数的时候(2进制)第1位是1, 举个例子: 用8个2进制位表示-1为11111111转成无符号型就是2的9次方减1了

郸城县15521612784: C语言中有个%p格式,是什么意思? -
熊园大活: 按内存地址格式输出

郸城县15521612784: C语言中 %p是什么输出限制符? -
熊园大活: 输出指针时内容,即输出指针所指向的内存地址的时候,用%p

郸城县15521612784: C语音 中,%p是什么意思? -
熊园大活: 格式控制符“%p”中的p是pointer(指针)的缩写.printf函数族中对于%p一般以十六进制整数方式输出指针的值,附加前缀0x.int i = 1; printf("%p",&i); 相当于 int i = 1; printf("0x%x",&i);

郸城县15521612784: C语言%p的含义 -
熊园大活: %p表示输出这个指针.更具体用法可参考百度百科的词条printf printf 功 能: 产生格式化输出的函数 用 法: int printf(const char *format,[argument]); format 参数输出的格式,定义格式为: %[flags][width][.perc] [F|N|h|l]type ([]中的内容表示是可根...

郸城县15521612784: c语言中%p什么意思 -
熊园大活: %p与指针对应,是输出指针的地址 如:char * p="abc";......printf("The address %p is %s", p, p); 输出就如同这样 The address 0FEA is abc

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网