C程序中各种格式说明符的说明

标签 c size format-specifiers

我不明白%p%u%x%d 之间的主要区别是什么>,除了%x显示十六进制,%u用于无符号整数,%d用于任意整数。在我使用一个整数变量并分别打印它的地址和它的值(正整数)之后,我非常困惑,然后不管我使用什么格式说明符,它都正确地打印输出(除了十六进制和十进制数字系统的差异).那么主要区别是什么?

如果没有太大区别,那么哪种格式说明符更适合打印哪种类型的变量?

另外一个疑惑是:是否所有的指针都是多重的(我是说int *p; int **p; int ***p; 等)占用相同的大小(这是在机器中存储有效地址所需的大小)?如果不是,那么这些指针的大小是多少?

感谢您的帮助。

最佳答案

%u%x%d%p格式说明符使用如下:

  • %u:需要一个 unsigned int 作为参数并以十进制格式打印它。
  • %x:需要一个 unsigned int 作为参数并以十六进制格式打印它。
  • %d:需要一个 int 作为参数并以十进制格式打印。
  • %p:需要一个 void * 作为参数并以实现定义的方式打印它(通常为十六进制数)

此外,%u%x%d 可以使用长度修饰符作为前缀:

  • l:表示一个long intunsigned long int
  • ll:表示一个long long intunsigned long long int
  • h:表示一个short intunsigned short int
  • hh:表示一个signed charunsigned char

关于指针大小,int *int **int ***等不要求大小相同,尽管在大多数实现中它们都是。

关于C程序中各种格式说明符的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281845/

相关文章:

c - 将内存分配给 3 维字符数组会导致段错误

c - 使用互斥体的 Pthread 同步未正确同步单词

android - 添加谷歌播放服务后,我的 APK 大小从 65 KB 增加到 8.8 MB(用于 admob)

C "%d"格式说明符

从函数、指针读取输入时,cs50 Credit.c 停止工作?

c - 逻辑算术移位

计算给定字符串中有多少个由空格分隔的整数值

WPF ListView 变得比它包含的 Canvas 更大

c - 两个格式说明符但只有一个参数

windows - 是否有一个格式说明符总是表示带有 _tprintf 的 char 字符串?