我想在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