繁体   English   中英

直接参数访问被忽略

[英]Direct Parameter access being ignored

所以我的代码行如下

printf("test @ 0x%1$08x = %2$d 0x%2$08x\n", &test_val, test_val);

但不是打印变量,而是打印

test @ 0x$08x = $d 0x$08x

它完全忽略了百分比字符,并且没有打印出任何变量。 我找不到任何有关此事的信息,也无法找到希望发生这种情况的任何原因,希望有人可以提供帮助。

编辑:我找不到链接,但是基本上是从我的知识和黑客技术中找到的:剥削艺术百分号后的数字应该是它使用的参数,因此%n $ d将使用第n个参数并打印为小数。 在这种情况下,%1 $ 08x将以十六进制形式打印&test_val,%2 $ d将以十进制形式打印test_val。

int c = 0;
int * p = &c;

printf("test@ 0x%d  %d\n", &p, *p);

http://www.cplusplus.com/reference/cstdio/printf/查看此页面,了解哪些修饰符将具有哪门课程。

(数字)要打印的最小字符数。 如果要打印的值小于此数字,则结果将用空格填充。 即使结果较大,该值也不会被截断。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM