Tek ve işaretsiz değerleri karşılaştırmam gereken bir noktaya geldim. Şimdiye kadar bu durumu tamamen önlemek için kod tabanını her zaman değiştirdim, ama şimdi bunu yapamam.İmzalı ve imzasız değerlerin karşılaştırılmasını doğru şekilde ele alma
Tekli ve imzasız karşılaştırmayı işlemek için doğru yol nedir? Bu karışık bir C/C++ kod tabanıdır, bu yüzden sorum her iki dile de uygulanır.
İstenen değere (imzasız) karşı bir kaynağı (imzalı) kontrol ediyorum.
if (requested > (unsigned)INT_MAX) bail_out(); // assert,abort,throw,return....
if ((signed)requested > resource.max) return Never;
if ((signed)requested > resource.free - resource.assigned) return NotNow;
return Now;
bunu doğru yaklaşan muyum, ya da bazı iyi bir yol yoktur:
if (requested > resource.max) return Never;
if (requested > resource.free - resource.assigned) return NotNow;
return Now;
bu (uygun durumlarda varyantları ++ yerine C) gibi bir şey düşünüyordum?
Bir başlangıç noktası olarak bu tek satırlık kodu kullanabilirsiniz
Kaynak numaranız neden ilk etapta imzalanır? –
Kaynak hakkında
Ya da neden imzasız talep edilir, çünkü OP'nin imzalandığı gibi davranmak istediği değerdir. Her neyse, bu yaklaşım benim için iyi görünüyor. Bu tür şeyler çok sıkıcı ve ben imzasız türlerden tamamen uzak durmaya eğilimliyim. – jahhaj