2015-12-25 77 views
3

我試圖將ulong(Uint64)添加到正常的int值 ,它給我錯誤的標題我使用的Visual Studio 2015年社區) 我也嘗試了所有的強制轉換成ULONG,但它仍然無法在這裏工作 是一些示例代碼operator'+'在類型'ulong'和'int'(C#)的操作數中不明確

ulong balance = 0; 
int salary = 5; 
private void button_click() 
{ 
    //this is what the error refrences: 
    balance = balance + salary; 
    //here's when I try to cast(gives the same error): 
    balance = (ulong)(balance + salary); 
    console.writeline("your balance is now : " + balance.tostring()); 
} 

無論操作者(/,+,* , - ),它仍然給出了同樣的錯誤:我找遍了所有的地方,找不到任何解決這個 我已經檢查了7頁上的MSDN/ 也沒有,沒有什麼:(

我只是想知道怎麼加,減,除或乘他們,謝謝:)

+0

它只有當你添加浮點數據類型的錯誤出現類似的皈依爲int等 –

+0

任何特別的原因,爲什麼你使用'ulong'而不是簡單的'long'?如果要保證一個正值,那麼爲什麼不使用'ulong'和'uint'而不是混合簽名和未簽名?還有一件事,'int.MaxValue'非常大,真的很大。你真的希望'平衡'有一個比'int.MaxValue'更大的數字嗎? – sstan

+0

@sstan是的,這有點像,你惹的時間超過15個百萬兆這些發聲遊戲:d,所以,是的,我不只是用它爲「我只是想最大的價值,因爲我不知道如果溢出會發生什麼事情「:3 – GamerGamesGames

回答

4

的問題是,你有鑄造,而不是壓鑄salaryulong匹配balance TY的balance + salary結果PE。

這應該足夠了:

balance += (ulong)salary; 

如果你想使用較少的內存,你可以投salaryuint而不是ulong(32位整數比64位整數)。當然,在一些非常罕見的情況下(大量數據和不多的內存)確實有意義。 此外,您還需要考慮到將帶符號整數轉換爲無符號整數可能會導致某些(不)預期的行爲。

+0

好主意!謝謝:D – GamerGamesGames

3

你可以施放intulong同時加入:

balance += (ulong)salary; 

或者在漫長的形式:

balance = balance + (ulong)salary; 
+3

@GamerGamesGames _「它使用更多的內存來轉換」_。不止是什麼? – Dmitry

+1

不止如果它根本不工作。 – mwilczynski

+0

@Dmitry不是使用它實際上並沒有遇到我的腦海之前,我看到了答案一個UINT值更多:d鑄造成UINT而不是 – GamerGamesGames

0

問題是Ulong總是正的,而int不是。 但是可以將薪水作爲一個單位來處理,然後添加它們。

這是有道理的,並沒有給出警告。

相關問題