如何使用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
- 3 回答
- 0 关注
- 753 浏览
添加回答
举报
0/150
提交
取消