2016-04-08 165 views
0

我想計算x = x * 2 + 1;有沒有簡短的方法來計算x * 2 + 1?

在大多數編程語言,
x = x*2;可以這樣寫x *= 2;

有沒有辦法節省一點更大些?

+6

爲什麼你想這樣做的一種可能方式,簡單是難以實現,一旦實現,它不應該讓複雜。簡單的代碼和錯誤的代碼是有區別的。在多線程系統中,i ++,j--不是原子的,可能會導致問題。小空間並不意味着聰明,也並不意味着更好。像i ++或i + = 2這樣的表達式很容易理解,並且易於在for循環等地方編寫。但不要嘗試去尋找不可理解的代碼。守則應始終是:T.U.B.E:可測試,可理解,可接受和可解釋。 *另請參閱KISS原則。 –

+0

OP從未說過他想在生產系統中使用它。好奇心在軟件工程師中是一個很好的素質。這是一個有趣的問題。 downvoted的人應該質疑他們是否自得其樂。 –

回答

3

x += x + 1怎麼樣?

x = x * 2 + 1相同(結果),但字符較少。

而且你也可以使用x += -~x,但起初有點難理解。

編輯:

我也試過x += ++x,它是作爲x = x * 2 + 1的一樣,太。但是我不能因爲這個陳述而感到邪惡,因爲它在一個陳述中分配了一個變量兩次。

2

x *= 2; x++;?這比x = x * 2 + 1;短,結果相同。

+0

實際上它有9個字符,OP的語句有8個字符。 – Nier

1

這也太

x*=(2+1/x) 
+0

有趣的替代方案,但在浮動價值結果方面似乎非常危險。防爆。 _59.00000000000001_ –

+0

我認爲這可以通過在上面的公式中使用浮點數值來處理。 – denis

相關問題