Skip to content

格式化输出

1、%p和%x、%lx、%hx、%llx(对应int、long、short、long long)区别

  • %p 可以匹配对应类型的指针地址,输出以16进制表示,会自带前缀0x
  • %x 可以对应int类型的指针,输出以16进制输出,不会自带前缀0x
  • 类似的,%lx,表示long类型指针,用16进制输出
long a[100] = {0};
printf("%p\n", a);
printf("%lx\n", a);

0x7fff48bf8c10
7fff48bf8c10

2、%m

在 C 语言和 C++ 中,%m 是一个格式说明符,用于在 printf 系列函数中输出最近一次系统调用错误的描述信息。它通常与 errno 变量一起使用,errno 变量在系统调用或库函数失败时会被设置为相应的错误代码。

注意事项:

  • %m 是 GNU 扩展,可能并不在所有的 C/C++ 标准库实现中都可用。它在 Linux 和一些其他 Unix-like 系统中是有效的,但在某些平台上可能会导致编译错误。
  • 如果你在一个不支持 %m 的环境中工作,可以使用 strerror(errno) 来获取错误信息。

This website is released under the MIT License.