Ungültiger Wert für size_t

8

Was bedeuten Personen, die angeben, dass size_t ungültig ist? -1 funktioniert nicht und 0 kann eine gültige Größe sein.

    
adk 14.09.2009, 11:24
quelle

5 Antworten

10

Vielleicht ((size_t)-1) ?

Streng genommen ist eine gültige Größe, aber sobald Sie diese haben, brauchen Sie wahrscheinlich keine anderen; -)

    
Michael Krelin - hacker 14.09.2009, 11:29
quelle
4

Wenn Sie von std :: string sprechen, ist der ungültige Wert von size_t std :: string :: npos. Normalerweise sollten Sie -1 nicht verwenden, da size_t unsigniert ist, und Sie können fehlgeschlagene Vergleiche für einen Compiler erhalten, der implizite Konvertierungen zwischen Typen durchführt.

Dabei wird std :: strings 'npos auf 0XFFFFFFFFFFFFFFFF ... gesetzt, was die binäre Äquivalenz von -1 ist. Es wird auch der maximal zulässige Wert für ein unsigniertes size_t-Feld ausgewertet.

    
Kieveli 14.09.2009 12:08
quelle
3

Grundsätzlich können Sie nicht. Welcher Wert du auch immer benutzt, mag ein gültiger Wert sein. Übergeben Sie besser eine Flagge, die sagt, dass sie ungültig ist.

    
Naveen 14.09.2009 11:26
quelle
1

Und was tun Sie, um anzuzeigen, dass ein int ungültig ist? -1 ist ein gültiger Wert für einen int. Diese Typen haben keine "ungültigen" Werte. Sie können einen bestimmten Wert wählen (der normalerweise niemals der Wert dessen sein kann, was Ihre Variable darstellt), um einen unzulässigen Wert darzustellen, aber das ist Ihre eigene Definition und nicht etwas, was die Leute normalerweise verwenden.

Persönlich mag ich diesen Weg nicht. Ich bevorzuge es, eine andere Variable, bool IsValid , zu erstellen, die sagt, ob der Wert der Variablen size_t gültig ist. Manchmal ist es sogar besser, eine Klasse zu erstellen, um sie zu kapseln.

    
Igor Oks 14.09.2009 12:02
quelle
0

Meine Version ist:

%Vor%     
Vadim Sukhorukov 09.05.2016 22:01
quelle

Tags und Links