0
我是新來的C++。我需要幫助解決這個錯誤:有符號和無符號整數表達式之間的C++比較
Item.cpp: In member function ‘char* ict::Item::sku() const’:
Item.cpp:65:36: warning: comparison between signed and unsigned integer
expressions [-Wsign-compare]
這是給錯誤的部分代碼:
//in header file
char m_sku[MAX_SKU_LEN + 1];
//in cpp file
char* Item::sku() const
{
int length = strlen(m_sku);
char *arr = new char[length]();
for (int i = 0; i <= strlen(m_sku); i++) {
arr[i] = m_sku[i];
}
return arr;
}
變化'INT I'以循環工作'std :: size_t'後者是無符號的,並且是由strlen()返回的類型,它永遠不會是負數。比較無符號和有符號整數可能會導致一些很難發現的問題,因此警告。警告是因爲兩個整數都被轉換爲無符號數,如果其中一個是負數,那麼它就成爲一個很大的正數,所以你可以得到一些非常奇怪的結果。可能的重複http://stackoverflow.com/questions/5416414/signed-unsigned-comparisons – doug