为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用printf系列可移植地打印size_t变量?

如何使用printf系列可移植地打印size_t变量?

C
慕田峪7331174 2019-07-02 16:00:56
如何使用printf系列可移植地打印size_t变量?我有一个类型的变量size_t,我想用printf()..我使用什么格式说明符来打印它?在32位机器里,%u似乎是对的。我用g++ -g -W -Wall -Werror -ansi -pedantic没有任何警告。但是当我在64位机器上编译这段代码时,它会产生警告。size_t x = <something>;printf( "size = %u\n", x );warning: format '%u' expects type 'unsigned int',      but argument 2 has type 'long unsigned int'如果我将警告更改为%lu.问题是,我如何编写代码,以便它可以在32位和64位计算机上自由编译警告?编辑:作为一种解决办法,我想一个答案可能是将变量“转换”成一个足够大的整数。unsigned long,并使用%lu..这在两种情况下都是可行的。我在看有没有别的主意。
查看完整描述

3 回答

?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

使用z修饰语:


size_t x = ...;

ssize_t y = ...;

printf("%zu\n", x);  // prints as unsigned decimal

printf("%zx\n", x);  // prints as hex

printf("%zd\n", y);  // prints as signed decimal


查看完整回答
反对 回复 2019-07-02
  • 3 回答
  • 0 关注
  • 753 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信