2^32 üzerinde numaralama bayrakları
Benim uygulamada Numaralama bayrakları kullanıyorum. Numaralama 50 civarında değer alabilir, değerleri 2^50 kadar gidin. Sadece merak ediyorum, ben Math.Pow(2, variable)
Bu hesaplamak için kullanabilir mi?
Bence bunu yapmaya çalıştığımdasabit değerderleme zamanı hatası. Başka bir yol, 2 el ile bu güçleri hesaplamak ve bunu uygulamaktan başka var mı?
Ben ne yapıyorum burada:
[Flags]
internal enum RiskStates : long
{
None = 0,
AL = Convert.ToInt64(Math.Pow(2,0)),
AK = 2,
AZ = 4,
AR = 8,
CA = 16,
CO = 32,
CT = 64,
DC = 128,
DE = 256,
FL = 512,
GA = 1024,
HI = 2048,
ID = 4096,
IL = 8192,
IN = 16384,
IA = 32768,
KS = 65536,
KY = 131072,
LA = 262144,
ME = 524288,
MD = 1048576,
MA = 2097152,
MI = 4194304
}
CEVAP
Bence bunu yapmaya çalıştığımdasabit değerderleme zamanı hatası.
Aslında eğer long
edebi zorlamak için L
soneki kullandıysanız iyi olurdu - ama hala ideal onları belirtmek için el ile yapmak için değil. ("Belli ki" zaman kodu okuma.) doğru değil
Bu ifade, bir derleme zamanı sabiti olmalı Math.Pow
kullanabilirsiniz.- ama bit kaydırma kullanabilirsiniz:
None = 0,
AL = 1L << 0,
AK = 1L << 1,
AZ = 1L << 2
vb. Daha fazla yine de okunabilir:) iddia ediyorum
Bayraklar üzerinde değerleri Numaralam...
Nasıl bir numaralama üzerinde yineleme...
döngü numaralama üzerinde yineleme içi...
SEÇİN bir sütun üzerinde AYRI...
sabit vs değişken üzerinde constexpr...