0
我用C代碼片段看起來像用於打印size_t值的便攜式代碼?
char buf[16];
size_t i = 6;
sprintf(buf, "%d", i);
工作......和編譯器警告我說的第三個參數的類型爲「爲size_t」當函數期待一個「廉政」。
所以我儘量告訴它,它會得到一個unsigned int
sprintf(buf, "%u", i);
現在的編譯器警告我說的第三個參數的類型爲「爲size_t」當函數期待一個「無符號整型」 。
從我在這個問題上的其他問題/解答閱讀,我不能假定爲size_t是一個unsigned int,這也解釋了警告。
- 那麼,我該如何重新編寫行,讓編譯器很快樂 (即編譯器是沉默的)?
編輯:
之前有人建議它,我在尋找,實際上解決了微小的可能性,事情可能出錯的解決方案。因此,通過去
sprintf(buf, "%d", (int)i);
或
sprintf(buf, "%u", (unsigned int)i);
強制類型轉換是不可取的。
謝謝,顯然解決了它! – roo