我想打印出一个类型的变量size_t
在 C 中,但似乎size_t
不同架构上不同变量类型的别名。例如,在一台机器(64 位)上,以下代码不会引发任何警告:
size_t size = 1;
printf("the size is %ld", size);
但在我的另一台机器(32 位)上,上面的代码会产生以下警告消息:
警告:格式“%ld”需要类型
'long int *',但参数 3 具有类型
'尺寸_t *'
我怀疑这是由于指针大小的差异造成的,因此在我的 64 位机器上size_t
别名为long int
("%ld"
),而在我的 32 位机器上size_t
是另一种类型的别名。
有没有专门针对的格式说明符size_t
?
是:使用z
长度修饰符:
size_t size = sizeof(char);
printf("the size is %zu\n", size); // decimal size_t ("u" for unsigned)
printf("the size is %zx\n", size); // hex size_t
其他可用的长度修饰符是hh
(for char
), h
(for short
), l
(for long
), ll
(for long long
), j
(for intmax_t
), t
(for ptrdiff_t
), and L
(for long double
)。请参见 C99 标准第 7.19.6.1 (7) 节。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)