Standardmäßig wird davon ausgegangen, dass eine ganze Zahl vorzeichenbehaftet ist. Mit anderen Worten, der Compiler geht davon aus, dass eine ganzzahlige Variable aufgerufen wird, um entweder eine negative oder eine positive Zahl zu speichern. Dies begrenzt das Ausmaß, das die Reichweite in beiden Richtungen erreichen kann. Beispielsweise hat ein 32-Bit-int einen Bereich von 4.294.967.295. Da der Wert positiv oder negativ sein kann, beträgt der Bereich in der Praxis tatsächlich –2.147.483.648 bis +2.147.483.647. Wenn wir wissen, dass eine Variable niemals zum Speichern eines negativen Werts aufgerufen wird, können wir sie als vorzeichenlos deklarieren und dadurch den (positiven) Bereich auf 0 bis +4.294.967.295 erweitern. Ich würde also sagen, es ist in Ordnung, NSInteger zu verwenden, wenn Sie wissen, dass Sie einen eingeschränkten Ausgabebereich haben. Ich persönlich verwende NSUInteger, wenn ich wirklich große, nur positive Zahlen zurückgeben musste
Gute Antwort und was ich wissen musste 🙂
– Mac
8. Mai 2017 um 18:24 Uhr
Was ist, wenn ich -4.294.967.295 speichern möchte? Ich kann NSInteger dann nicht verwenden?
– Nr. 5
16. Mai 2017 um 8:03 Uhr
@Nil long long int: -9.223.372.036.854.775.807 bis 9.223.372.036.854.775.807 unsigned long long int: 0 bis 18.446.744.073.709.551.615. Ziemlich viel Geld, um es auf Ihrem Konto zu haben 😀
– Naveed Abbas
27. Oktober 2017 um 14:45 Uhr
Wenn Ihre Methode einen entsprechend eingeschränkten Ausgabebereich hat, können Sie auch verwenden NSInteger da es einfacher zu tippen ist. Wie Sie sagen, wenn Sie negative Zahlen zurückgeben müssen, NSInteger ist das einzige Spiel in der Stadt; Ich würde nur verwenden NSUInteger wenn ich zurück musste Ja wirklich große Zahlen aus irgendeinem Grund.
Verwenden Sie für noch größere Zahlen NSDecimalNumber für 38 Stellen mit einer Genauigkeit von Basis 10.
– Codekrieger
31. März 2010 um 23:42 Uhr
+1, @codewarrior, jedoch nur, wenn Sie Klassen weitergeben können.
– Karl Norum
31. März 2010 um 23:46 Uhr
Ich gehe den anderen Weg: Ich verwende NSUInteger immer, außer wenn ich negative Zahlen brauche. Außerdem meinst du Objekte, keine Klassen; Es gibt nur sehr wenige Gründe, Klassen weiterzugeben, und noch weniger Gründe, speziell die Klasse NSDecimalNumber zu übergeben.
– Peter Hosey
3. April 2010 um 2:26 Uhr
Ich denke, es hängt wirklich von unseren Bedürfnissen ab.
– Jesse Armand
16. Juli 2010 um 20:39 Uhr
AaronLS
Ich weiß nicht speziell über Kakao Bescheid, aber normalerweise ist der einzige Nachteil von vorzeichenbehafteten Ganzzahlen, dass sie normalerweise die Hälfte des maximalen Werts als unsigned int haben. Etwa 2 Milliarden statt 4 Milliarden für 32-Bit-Systeme. Im Allgemeinen ist dies kein großer Unterschied, denn wenn Sie es mit Werten nahe 2 Milliarden zu tun haben, wären Sie im selben Fall wahrscheinlich genauso besorgt über ein Maximum von 4 Milliarden, da es mit nur einem immer noch ziemlich nahe an einem Überlauf liegt Multiplikation von 2 oder 3.
Vorzeichenbehaftete Ganzzahlen werden normalerweise wegen der zusätzlichen Flexibilität und der Tatsache bevorzugt, dass eine vorzeichenbehaftete Ganzzahl in fast allen Szenarien verwendet werden kann, in denen eine vorzeichenlose Ganzzahl verwendet werden kann, sowie in allen zusätzlichen Szenarien, in denen ein Negativ benötigt wird.
Unsigned ist möglicherweise vorzuziehen, wenn Sie nur positive Werte erzwingen möchten.
13856600cookie-checkNSUInteger vs. NSInteger, int vs. unsigned und ähnliche Fälleyes