格式化输出
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) 来获取错误信息。