Kullanıcılar, size_t öğesinin geçersiz olduğunu belirtmek için neler kullanıyor? -1 çalışmıyor ve 0 geçerli bir boyut olabilir.Size_t için geçersiz değer
cevap
Belki ((size_t)-1)
?
Açıkçası, bu geçerli bir boyut, ama bu bir var bir kere başka ihtiyaç olası değil ;-)
C99 çok baytlı dize işlevlerinden bazıları bunu yapar: anormal koşulları belirtmek için '(size_t) (- 1)' veya hatta '(size_t) (- 2)' döndürürler; Optimal değil, ama pratikte çalışıyor; Sorunun nedeni hata işleme ise, bir hata değişkenine bir işaretçiyi iletmek daha iyi bir fikir olabilir (örneğin, '_Bool' türünde bir hata bayrağı,' int' türünde bir hata kodu veya türünde bir hata iletisi gibi. const char * ') ek argüman olarak – Christoph
Evet, bu yaygın bir deyim. Sıklıkla '(time_t) -1' de görebilirsiniz. –
@ MichaelKrelin-hacker: '(time_t) -1 'biraz farklıdır; standart, özellikle şu anki zamanın belirlenememesi durumunda time() 'ile döndürülen değerin olduğunu söyler. Ve 'time_t' genellikle imzalı bir türdür, bu yüzden '(time_t) -1 'genellikle çağlardan 1 saniye öncedir. –
Temelde yapamazsınız. Kullandığınız değer, geçerli bir değer olabilir. Geçersiz olduğunu söyleyen bir bayrak geçsen iyi olur.
Ve ne bir int
geçersiz olduğunu göstermek için yapıyorlar? -1, int için geçerli bir değerdir. Bu türler "geçersiz" değerler belirlemedi. Belirli bir değeri (normalde değişkeninizin neyi temsil ettiğinin değeri olamayabilir) yasadışı bir değeri temsil etmeye karar verebilirsiniz, ancak bu sizin kendi tanımınızdır ve insanların genel olarak kullandığı bir şey değildir.
Şahsen ben bu şekilde sevmiyorum. Bu size_t değişkeninin değerinin geçerli olup olmadığını söyleyen bool IsValid
başka bir değişken oluşturmayı tercih ediyorum. Bazen bunları kapsüllemek için bir sınıf oluşturmak daha iyi olabilir.
std :: string hakkında konuşuyorsanız, o zaman size_t değeri geçersiz değer std :: string :: npos. Normal olarak -1 değerini kullanmamalısınız, çünkü bir size_t işaretsizdir ve türler arasında örtük dönüşümler yapan bir derleyicide başarısız karşılaştırmalar alabilirsiniz.
Bu söyleniyor ki, std :: dizelerinin npos'u, -1'in ikili eşdeğeri olan 0XFFFFFFFFFFFFFF ... olarak ayarlanmıştır. Ayrıca, imzasız bir size_t alanı için izin verilen maksimum değere de değerlendirir.
bu 'string :: size_type' değil,' size_t' ;-) –
Yine de ... yanıtın geri kalanı katı altındır. KATI ALTIN! – Kieveli
En azından parlıyor ;-) –
Benim sürümü:
#include <limits>
#define invalid_index std::numeric_limits<size_t>::max()
'std :: numeric_limits
- 1. C++ - Geçersiz değer silme
- 2. svg geçersiz değer için <path>
- 3. Google Analytics: Filtreler parametresi için geçersiz değer
- 4. Özellik için geçersiz değer <position>
- 5. std :: size_t için başlık içerir tercih
- 6. size_t dönüştürmek/C++
- 7. std :: unordered_map için karma değer
- 8. java.lang.IllegalArgumentException: Sayfa yönergesi: içe aktarma için geçersiz değer
- 9. "Mesaj": "Geçersiz web hizmeti çağrısı, parametresi için eksik değer: \ u0027
- 10. Tanıtımı Yöntemi, Dağıtılmış işlem hatası için geçersiz bir değer verdi
- 11. C'nin printf bir dize kesinliğini belirtmek için size_t kullanma
- 12. Platform bağımsız size_t Format belirleyicileri c?
- 13. Bu kod ne yapıyor? (size_t) -1
- 14. C++, en iyi uygulamalar, int veya size_t?
- 15. Size_t'den int'ye veya size_t ile yineleme yapın.
- 16. En fazla iki size_t değişkenini hesapladım
- 17. laravel 5 Göç, Geçersiz varsayılan değer zaman tamsayı
- 18. TEXT sütunu için boş değer için varsayılan değer nasıl ayarlanır?
- 19. Martini ile GoLang JWT attı <geçersiz Değer>?
- 20. Özel Denetim Geçersiz Kıl Metin Özellik Varsayılan Değer
- 21. NumPy'de "RuntimeWarning: bölünmede karşılaşılan geçersiz değer" nasıl engellenir?
- 22. İçinde gizli bir kubernetes pod oluşturmaya çalışırken geçersiz değer
- 23. NSJSONSerialization hatası. Kod = 3840 "karakteri etrafında geçersiz değer 0
- 24. : geçersiz aralık
- 25. angularjs geçersiz tarih girişini önlemek için yönergesine
- 26. == geçersiz kılma == geçersiz kılma
- 27. std :: copy_n neden std :: size_t yerine bir şablon parametresi alıyor?
- 28. WPF Ciltleme - Nesne belirleme geçersiz kılmak için Geçersiz Kaydet
- 29. Değer eşleştirmesi için Groovy yolu?
- 30. Java için "Anahtar-Değer Kodlaması"
Nasıl -1 "çalışmıyor" mu? –
Şahsen, POSIX olmayan sistemleri kullanmayı reddediyorum ve "ssize_t" ürününe güveniyorum. –