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'に向けてカウントダウンループでは動作しませんので、
しかし、注意してください:あなたは、strlen関数の戻り値の型と一致するように
size_t
を使用することができます'std :: size_t'後者は符号なしで、strlen()によって返される型であり、決して負であってはいけません。符号なし整数と符号付き整数を比較すると、問題を見つけるのが非常に難しくなるため、警告が表示されます。警告は、両方のintが符号なしに変換され、1つが負の場合は大きな正の数になり、結果的に奇妙な結果が得られるためです。 http://stackoverflow.com/questions/5416414/signed-unsigned-comparisonsの可能な複製 – doug