2016-04-08 22 views
0
Ben en çok programlama dillerinde x = x * 2 + 1;

X * 2 + 1 hesaplamanın kısa bir yolu var mı? <br> <code>x = x*2;</code><code>x *= 2;</code></p> <p>gibi yazılmış olabilir

hesaplamak isteyen

, biraz daha fazla boşluk kaydetmek için bir yolu var mı?

+6

Neden bunu yapmak istiyorum olası bir yoldur, Basitlik karmaşık yapılmamalıdır, ulaşılması güç ve bir kez elde olduğunu. Basit kod ve hatalı kod arasında bir fark var. Çok dişli sistemlerde, i ++, j-- atomik değildir ve sorunlara yol açabilir. Küçük alan akıllı anlamına gelmez ve aynı zamanda daha iyi anlamına gelmez. I ++ veya i + = 2 gibi ifadelerin anlaşılması kolay ve loop gibi yerlerde yazmak kolay. Ancak, anlaşılabilir olmayan bir kod yazmanın alışılmadık yollarına gitmeye çalışmayın. Kod her zaman olmalıdır: T.U.B.E: Test edilebilir, anlaşılabilir, Kaşlanabilir ve Açıklanabilir. * Ayrıca KISS ilkesine bakınız. –

+0

OP, bunu bir üretim sisteminde kullanmak istediğini söylemedi. Merak bir yazılım mühendisinde iyi bir kalitedir. Ve bu eğlenceli bir soru. İndirgemeyen kişiler, kendilerini yeterince zevk alıp almadıklarını sorgulamalıdır. –

cevap

3

x += x + 1 nasıl olur?

x = x * 2 + 1 ile aynıdır, ancak daha az karakterle.

Ayrıca x += -~x'u da kullanabilirsiniz, ancak ilk başta anlaması biraz daha zordur.

DÜZENLEME:

Ben de x += ++x denedik ve çok, x = x * 2 + 1 olarak aynı. Ama bu ifadeyle kötülükten vazgeçemiyorum çünkü bir ifadede iki kez bir değişken atayabiliyor.

2

x *= 2; x++; nasıl? Bu, aynı sonucu olan x = x * 2 + 1;'dan daha kısa.

+0

Aslında 9 karakterden oluşuyor ve OP'nin deyiminde 8 karakter var. – Nier

1

Bu da

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

İlginç bir alternatif, ancak yüzer değer sonuçlarında oldukça tehlikeli görünüyor. Ör. _59.00000000000001_ –

+0

Yukarıdaki denklemdeki şamandıra değerlerini kullanarak dikkat edilebileceğini düşünüyorum. – denis

İlgili konular