2011-09-21 65 views
0

我正在嘗試編寫一個bool函數,它查看包含正數或負數的數組中的第一個索引,並將它分類爲負號(即 - )。如果它是否定符號,則返回false,其他所有內容都返回true。我想弄清楚如何比較負號。下面的代碼給出,因爲一個錯誤的「 - 」如何確定數組中的第一個索引是否定的標記

bool BigNum::get_positive() const 
{ 
char '-'; 
if(digits[0] == '-') 
{ 
    return false; 
} 
else 
{ 
    return true; 
} 
} 
+1

你有什麼期待實現這一點:'字符「 - 」; '? – Nim

+1

有一些現存的大整數的圖書館[我認爲這是你想要做的],爲什麼重新發明輪子? – amit

+0

另外,這更像是一個樣式問題,但是因爲你的函數試圖確定一個BigNum的實例是否代表一個正數,爲什麼不把它叫做'isPositive()'?一個名爲'get_X()'的函數通常會建議它返回一些存儲的信息,這裏不是這種情況。 – Anson

回答

5
char '-'; 

編譯器認爲你要聲明一個字符,但是這不是一個有效的聲明。

你的整個功能可以替換爲:

return (digits[0] != '-'); 

當然,這是假設[0]digits有效的索引。如果不是,壞事將會發生。如果你知道陣列的長度,你可以這樣做:

if(digits_length < 1) 
    return false; 
return (digits[0] != '-'); 
+1

這不會寫得更好嗎?return digits_length> 0 && digits [0]!='-''? (假設你想在這種情況下得到一個結果:我懷疑拋出一個異常,甚至中止,會更合適。) –

+0

啊哈很好。 :) – Anson

+0

@James:好吧,如果字符串長度爲0,那麼它不以'-'開頭,但它也不代表數字。所以這取決於函數是如何被使用的。 –

1

你必須刪除或註釋「char」 - 「;」

1

錯誤在於char' - '。 ' - '應該存儲在某個變量中,以後可以在如果使用子句進行比較。這是一個語法錯誤,因爲您沒有爲' - '定義存儲。

否則如上只是刪除這一行,並使用逃脫尖「 - 」在如果(因爲你已經做到了)

相關問題