搬砖:%P 和%X有什么区别

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

https://bbs.csdn.net/topics/391981254

C语言中 %P 和%X有什么区别,书上在同一段程序中 一会用%X,一会用%P,不明白

网上有的说 %P就相当于0X%X,但是我看一下结果,%P比%X在前头多输出两个0,为什么不是0X呢  
 

 

0 2016-07-07 23:02:26

只看TA 引用 举报 #5    得分 0

lm_whales

Bbs8

BlankBlank

一个是专用,遵纪守法的用法,%p用于输出指针,这是一直以来都这么做的,也是写在标准里面的。
一个是乱用,无视法纪。%x 输出指针,这是没有认真学习,printf 类输出函数,输出数据的方式
想当然的,以为指针和整形数大小相同,胡乱用的。凑巧没错,是不能保证的

0 2016-07-08 10:56:37

只看TA 引用 举报 #6    得分 1

对于摄像机而言同样清晰度下25p和50i画质会有什么差别? 对于摄像机而言同样清晰度下25p和50i画质会有什么差别?

engineer-yang

Bbs1

%p输出地址,%x 16进制输出值。

0 2016-07-08 13:12:38

只看TA 引用 举报 #7    得分 1

winbond w25p64 datasheet The W25Q64FV (64M-bit) Serial Flash memory provides a storage solution for systems with limited spac

贾可

Bbs5

32 位程序,%p 等同于 %08x;64 位程序,%p 等同于 %016llx。
也就是说,指针有多少字节他就输出多少字节。

0 2016-07-22 16:12:58

只看TA 引用 举报 #8    得分 5

STM25p64v6p 64M位SPI串行FLASH存储器。 64 Mbit, Low Voltage, Serial Flash Memory With 50MHz SPI Bus Interface

自信男孩

Bbs8

BlankBlank

%X和%x的不同是在a~f上的大小写的不一样;%x是小写a~f,比如(0x)3d; %X是大写A~F,比如(0x)3D;他们都标识以16进制格式;
%p是输出指针地址;但是%P不知道是啥鬼,没用过;

0 2016-07-22 17:27:08

只看TA 引用 举报 #9    得分 5

EDIUS 视音频制作标准教程(第2版)21堂课高清1280X720 25Pmp4格式 含同步素材 edius初学者必备装备 EDIUS 视音频制作标准教程(第2版)21堂课高清1280X720 25Pmp4格式 含同步素材 edius初学者必备装备 肖一峰,作为Grass Valley 公司EDISU产品工程师,有大量机会与国内外第一线的制作者接触,从大量的教学和交流中汲取新的营养。 本书配有2DVD光盘,其中包含所有实例制作所需要的素材与效果文件、视频结果文件,以及21堂1280X720高清教学视频录像(大小5.

hijack00

Bbs3

%p专门用于输出一个地址(也就是指针的值),而%x用于将一个整型数按照十六进制输出,如果是小写的x则输出小写形式,如果是大写的X则输出大写形式。例如,十进制170如果用%x输出aa,用%X输出AA。%和x之间还可以输入一个整型数表示宽度,输入0表示宽度不足时补零,负号-表示右对齐。还以十进制170为例:
%4X    输出:AA[][]
%-4X   输出:[][]AA
%04X  输出: 00AA
%-03X 输出: []0AA
0X%X  输出: 0XAA
等等([]表示空格)

C/C++占位符,%x%p区别 今天遇到了一个很奇怪的问题,当使用`malloc`分配了一个堆空间后,分别尝试用`cout``printf`尝试打印该地址,出现了两个地址不一样的情况:可以看出两个地址低32位是一致的,出现问题的原因应该是`printf`显示不全导致的。 阅读详情

相关推荐

%p 打印地址?它打印的是变量值!什么是格式化输出,指针与地址的区别

不要再被什么“%p 打印变量地址”、“%p 格式化地址” 误导了! 不要把指针神秘化、复杂化,它就是一个有点特殊的变量而已! 首先说指针与地址的区别: 指针是一个变量,这个变量占用一个存储空间,内部存储了一个值,只不过这个值比较特殊,它表示另一个变量的地址; 我们忽略这个值的特殊性,就可以发现,指针变量其他变量并没有什么区别,都是一个变量,存储了一个值,如此而已! 而地址,...

广阔天地_大有作为的博客 1万+

C语言”%p”的意思-----printf("%p",p)

printf("%p",p) %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 所以,在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0...

Young_Fan 5万+

C/C++中%x%p的坑:为什么我的指针地址打印不全?

本文深入解析了C/C++中指针地址打印的常见陷阱,重点对比了%x%p两个占位符的本质区别。在64位系统上,%x因期待32位unsigned int参数,会导致64位指针地址被截断,而%p专为void*设计,能正确输出完整地址。文章提供了使用%p、uintptr_t结合PRIxPTR宏等可移植的解决方案,并强调了类型安全与避免格式化字符串漏洞的重要性。

weixin_29015801的博客 266

C语言杂记

%p%x区别 %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0。 %x:无符号十六进制整数(字母小写,不像上面指针地址那样补零) %X:无符号十六进制整数(字母大写,不像上面指针那样补零) %x%X%p的相

Jocelin47的博客 822

C学习:%p%x、%lx、%hx、%llx区别辨析

%p%x、%lx、%hx、%llx(对应int、long、short、long long)区别 总结: %p 可以匹配对应类型的指针地址,输出以16进制表示,会自带前缀0x %x 可以对应int类型的指针,输出以16进制输出,不会自带前缀0x 类似的,%lx,表示long类型指针,用16进制输出 分析: 当然,上面也可以用 %ld,表示将long类型的指针地址,强制用10进制输出 %x只对应输出进制类型,具体的指针地址输出需要根据指针类型加修饰符 %p就固定了用16进制,可以囊括不同类型的指针地址表达

来知晓的博客 4万+

C语言中的格式化输出符号:%d %c %p %x

d是C语言中的格式化输出符号,用于将整数值按照十进制格式输出到标准输出流(通常是控制台)。它可以用于printf函数中的格式化字符串中,指示要输出的整数的位置格式。例如,"%d"可以用来输出一个整数变量的值。%c是C语言中的格式化输出符号,用于输出字符。在printf函数中,%c可以用来输出一个字符变量的值。在你的代码中,如果你想打印出数组元素的字符表示,你可以使用%c。在C语言中,%p是一种格式化输出的转换说明符,用于打印指针变量的值。输出其他类型的数据,将会导致未定义的行为。类型的数据,如果使用。

Shujie 7万+

C语言%d、%c与%hhd的区别,%p%x区别

1.printf(("%%d)=%d", a), 这里%% 可以输出% 2.sprintf的作用是将一个格式化的字符串输出到一个目的字符串中,而printf是将一个格式化的字符串输出到屏幕 3. sprintf()最常见的应用之一莫过于把整数打印到字符串中,如: char s[10]; sprintf(s, "%d", 123); //把整数123打印成一个字符串保存在s中 sprintf(s...

小白tree的博客 3万+

c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e)

c语言转换说明符总结(%d,%i,%u,%f,%o,%x,%X,%p,%s,%g,%e),各个转义符的区别举例

Penseur2018的博客 2万+

C语言%p%x区别

%p”中的p是pointer(指针)的缩写。%p是打印地址的, 而%x是以十六进制形式打印。 %p是打印地址(指针地址)的,是十六进制的形式,但是会全部打完,即有多少位打印多少位。 32位编译器的指针变量为4个字节(32位),64位编译器的指针变量为8个字节(64位)。 所以,在32位编译器下,使用%p打印指针变量,则会显示32位的地址(16进制的);在64位编译器下,使用%p打印指针变量,则会显示64位的地址(16进制的),左边空缺的会补0。 %x:无符号十六进制整数(字母小写,不像上面指针地址那样补零

QWQ___qwq的博客 1万+

c语言中%p0x%x,C语言中的%p%x区别

1、输出的类型不同:%p用来输出指针的值、输出地址符。指针,是一个无符号整数(unsigned int),它是一个以当前系统寻址范围为取值范围的整数。而%x, %X 输出无符号以十六进制表示的整数。2、输出的结果会有不同:32位系统下寻址能力(地址空间)是4G Bytes(0~2^32-1)二进制表示长度为32bits(也就是4Bytes), unsigned int类型也正好如此取值,%p用来输...

weixin_36011776的博客 8558

c语言中%p%x的意思

图示: 其中,%p%x均表示十六进制,只是格式不同 附代码: #include<stdio.h> #include<string.h> int main() { char c, s[20], *p; int a=1234, *i; float f=3.141592653589; double x=0.12345678987654321; p="How ...

Linger_stu的博客 1万+

c语言里的%p的作用,关于C语言中%p%X的思考

概述说白了,(%A)仅仅代表以何种格式显示所要显示的数据,具体何种格式如下:%d 有符号10进制整数%i 有符号10进制整数%o 无符号8进制整数%u 无符号10进制整数%x 无符号的16进制数字,并以小写abcdef表示%X 无符号的16进制数字,并以大写ABCDEF表示%F/f 浮点数%E/e 用科学表示格式的浮点数%g 使用%f%e表示中的总的位数表示最短的来表示浮点数 G 同g格式,但表...

weixin_33601398的博客 4466

c语言中 null NULL的区别 %p%x区别 在dvc++运行

#include <cstddef> #include<stdio.h> int main() { int *p; /* c语言c++对大小写是敏感的, 也就是说nullNULL是区别对待的。NULL代表空地址,null只是一个符号。 其实nullNULL都是字符串,看你把它们,宏copy定义为什么值, 在VS中NULL被定义为0,因为习惯上...

qq_25648915的博客 1883

指针使用%p输出,区分%x%p区别

几年前写的一个模块,前几天准备把它拿出来编译成64位的版本使用,因为对于windows的API一直是按照参数微软文档给出的原型进行调用,也没有指针到整数的强转,因此整个编译几乎没遇到问题,直接生成64位版本,但是测试时发现一个问题,所有的运行log输出的地址值都不对,64位系统下log里记录的还是32位的地址值,显然是被截断的地址值。看了一下代码,原来所有指针的格式化用的都是”%x”,真是欲哭无泪,

大自然的代码 1万+

【逆向】%p%x、%lx、%hx、%llx区别辨析

p可以匹配对应类型的指针地址,输出以16进制表示,会自带前缀0x%x可以对应int类型的指针,输出以16进制输出,不会自带前缀0x类似的,%lx,表示long类型整数,用16进制输出;%lx,表示long long类型64位整数,用16进制输出;

qq_43331089的博客 530

Linux %p%x区别

%p打印地址 %x打印值

weixin_61637506的博客 553

指针变量-printf %d%p的含义

1.指针变量的值是地址,地址通常用16进制表示 2.int a=1; int* p=&a; printf("%d\n",p);printf("%p\n",p);有什么区别呢,输出的都是p的值,%p是把指针变量p中存储的a的地址以十六进制形式输出,%d是吧p中存储的a的地址以十进制形式输出。输出的都是p的值,不要理解成%p,是把p的地址输出。 %p就是专门给指针变量使用的,输出指针变量中存储的值,也就是其他变量的地址,只不过是以十六进制形式输出。 #include<stdio.

qq_39224221的博客 8081

%p%x

%p 输出sizeof(void*)大小的数据 %x 输出sizeof(unsigned int)大小的数据 Please do not use %x for pointers

沧海无际 690
上一篇: 面:c++笔试题汇总
下一篇: 搬砖:函数名&函数名取地址
nedwons
博客等级 码龄9年 311粉丝 572原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值