我最近開始使用-Wall編譯器開關來嘗試提高我的代碼質量。這是給(正確的)警告這個小片段...簽名/無符號比較和-Wall
int i;
for (i = start - 1; i >= 0; i--)
{
if (i >= number1.array.size())
{
one_value = 0;
}
因爲number1.array.size是無符號的(這是對一個std :: vector的size方法)。由於循環中的測試是i> = 0,我必須簽名或不起作用。看來我有三種選擇;不要使用-Wall,忽略警告或引入輔助元素...
int i;
unsigned int j;
for (i = start - 1; i >= 0; i--)
{
j = i;
if (j >= number1.array.size())
{
one_value = 0;
}
這些都不是特別理想。你能否提出其他建議,或者就我在這種情況下應該做什麼提出建議?
你可以的static_cast <>其中一個其他的類型 – 2010-08-13 10:19:59
你可以使用小已知的「down-to」運算符:'for(unsigned int i = start; i - > 0;)' – 2010-08-13 10:23:39