我想在C中打印出一个类型为size_t
的变量,但看起来size_t
在不同的体系结构中被别名为不同的变量类型。例如,一台机器上(64位)以下代码不会引发任何警告:平台无关size_t c中的格式说明符?
size_t size = 1;
printf("the size is %ld", size);
但我的另一台机器上(32位)的上面的代码产生以下警告消息:
警告:格式“%ld的”需要键入 “长整型*”,但争论3的类型为 “为size_t *”
我怀疑这是由于指针大小的差异,让我64位机器size_t
被别名为long int
("%ld"
),而在我的32位机器size_t
上被别名为别的类型。
是否有专门针对size_t
的格式说明符?
您的警告信息与代码不符。警告提到指针,你的代码没有任何。你有没有删除一些'&'的地方? – Jens 2012-04-17 14:38:34
指针?不,我没有得到关于指针的任何警告,实际上取决于我运行该代码的机器有时根本没有任何警告。请尝试以下测试代码: #include int main(){ size_t size = 1; printf(“尺寸为%ld”,尺寸); return 0; } –
2012-04-17 16:39:07
另请参见[跨平台格式字符串的变量类型size_t?](http://stackoverflow.com/questions/174612/cross-platform-format-string-for-variables-of-type-size-t) 。 – legoscia 2012-09-21 10:10:18