Guss vom Typ Objective-C

Typumwandlung ist eine Möglichkeit, eine Variable von einem Datentyp in einen anderen Datentyp zu konvertieren. Wenn Sie beispielsweise einen langen Wert in einer einfachen Ganzzahl speichern möchten, können Sie cast long in int eingeben. Sie können Werte von einem Typ explizit mit einem in einen anderen konvertierencast operator wie folgt -

(type_name) expression

In Objective-C verwenden wir im Allgemeinen CGFloat für die Gleitkommaoperation, die im Fall von 32-Bit vom Basistyp Float und im Fall von 64-Bit vom Double abgeleitet wird. Betrachten Sie das folgende Beispiel, in dem der Cast-Operator bewirkt, dass die Division einer Ganzzahlvariablen durch eine andere als Gleitkommaoperation ausgeführt wird.

#import <Foundation/Foundation.h>

int main() {
   int sum = 17, count = 5;
   CGFloat mean;

   mean = (CGFloat) sum / count;
   NSLog(@"Value of mean : %f\n", mean );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

2013-09-11 01:35:40.047 demo[20634] Value of mean : 3.400000

Hierbei ist zu beachten, dass der Cast-Operator Vorrang vor der Division hat, also der Wert von sum wird zuerst in Typ konvertiert double und schließlich wird es durch die Zählung geteilt, was einen doppelten Wert ergibt.

Typkonvertierungen können implizit sein, was vom Compiler automatisch durchgeführt wird, oder sie können explizit durch die Verwendung von angegeben werden cast operator. Es wird als gute Programmierpraxis angesehen, den Cast-Operator immer dann zu verwenden, wenn Typkonvertierungen erforderlich sind.

Ganzzahlige Förderung

Integer-Promotion ist der Prozess, bei dem Werte vom Integer-Typ "kleiner" als sind int oder unsigned int werden entweder in konvertiert int oder unsigned int. Betrachten Sie ein Beispiel für das Hinzufügen eines Zeichens in einem int -

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c';  /* ascii value is 99 */
   int sum;

   sum = i + c;
   NSLog(@"Value of sum : %d\n", sum );

   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

2013-09-11 01:38:28.492 demo[980] Value of sum : 116

Hier kommt der Wert der Summe als 116, da der Compiler eine Ganzzahl-Heraufstufung durchführt und den Wert von 'c' in ASCII konvertiert, bevor die eigentliche Additionsoperation ausgeführt wird.

Übliche arithmetische Umrechnung

Das usual arithmetic conversionswerden implizit ausgeführt, um ihre Werte in einen gemeinsamen Typ umzuwandeln. Der Compiler führt zuerst eine Ganzzahl-Heraufstufung durch . Wenn Operanden immer noch unterschiedliche Typen haben, werden sie in den Typ konvertiert, der in der folgenden Hierarchie am höchsten erscheint:

Die üblichen arithmetischen Konvertierungen werden weder für die Zuweisungsoperatoren noch für die logischen Operatoren && und || durchgeführt. Nehmen wir das folgende Beispiel, um das Konzept zu verstehen:

#import <Foundation/Foundation.h>

int main() {
   int  i = 17;
   char c = 'c';  /* ascii value is 99 */
   CGFloat sum;

   sum = i + c;
   NSLog(@"Value of sum : %f\n", sum );
   return 0;
}

Wenn der obige Code kompiliert und ausgeführt wird, ergibt sich das folgende Ergebnis:

2013-09-11 01:41:39.192 demo[15351] Value of sum : 116.000000

Hier ist es einfach zu verstehen, dass das erste c in eine Ganzzahl konvertiert wird, aber da der Endwert float ist, gilt die übliche arithmetische Konvertierung, und der Compiler konvertiert i und c in float und fügt sie hinzu, was ein float-Ergebnis ergibt.