我不明白%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 int
或unsigned long int
ll
:表示一个long long int
或unsigned long long int
h
:表示一个short int
或unsigned short int
hh
:表示一个signed char
或unsigned char
关于指针大小,int *
、int **
、int ***
等不要求大小相同,尽管在大多数实现中它们都是。
关于C程序中各种格式说明符的说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281845/