EZ

Eduzan

Learning Hub

Back to OBJECTIVE C

Type Casting in Objective-C

Published 2025-12-16

Objective C

Type Casting and Their Types

Objective-C is a programming language that was created in the 1980s and is widely used for developing software for the macOS and iOS platforms. One of Objective-C’s key features is its ability to perform typecasting. Type casting enables programmers to convert one data type to another, which is useful in a wide range of programming scenarios. This article provides an in-depth overview of type casting in Objective-C, including examples of all types and subtypes.

What is Type Casting?

Type casting in Objective-C is the process of converting one data type to another. Objective-C has several types and subtypes, including:

  • Implicit type conversion: The compiler performs this type of type casting automatically when a value is assigned to a variable of a different type.
  • Explicit type conversion: This is done by the programmer and necessitates the use of specific syntax and keywords.
  • Narrowing type conversion: Narrowing type conversion involves converting a larger data type to a smaller one, which can result in data loss.
  • Widening type conversion: In this type of type casting, a smaller data type is converted to a larger one without data loss.

Syntax and Related Keywords

In Objective-C, type casting is performed by using the appropriate keyword for the conversion. The most commonly used keywords for typecasting are:

  • (type) variableName: This syntax is used for explicit type conversion, where ‘type’ is the data type to which the variable is being converted and ‘variableName’ is the variable’s name.
  • intValue: Used to convert a string or float to an integer.
  • floatValue: Used to transform an integer or string into a floating-point number.
  • boolValue: Used to transform an object into a Boolean value.

Examples of Type Casting in Objective-C

Example 1: Implicit Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Implicit type conversion example
        int number = 42;
        double result = number;

        NSLog(@"The value of number is %d", number);
        NSLog(@"The value of result is %f", result);
    }
    return 0;
}

Output:

The value of number is 42
The value of result is 42.000000

Example 2: Explicit Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Explicit type conversion example
        double value = 99.99;
        int roundedValue = (int)value;

        NSLog(@"The value of value is %.2f", value);
        NSLog(@"The value of roundedValue is %d", roundedValue);
    }
    return 0;
}

Output:

The value of value is 99.99
The value of roundedValue is 99

Example 3: Narrowing Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Narrowing type conversion example
        double largeValue = 12345.6789;
        float reducedValue = (float)largeValue;

        NSLog(@"The value of largeValue is %.4f", largeValue);
        NSLog(@"The value of reducedValue is %.4f", reducedValue);
    }
    return 0;
}

Output:

The value of largeValue is 12345.6789
The value of reducedValue is 12345.6797

Examples of Type Casting in Objective-C

Example 1: Implicit Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Narrowing type conversion example
        double largeValue = 12345.6789;
        float reducedValue = (float)largeValue;

        NSLog(@"The value of largeValue is %.4f", largeValue);
        NSLog(@"The value of reducedValue is %.4f", reducedValue);
    }
    return 0;
}

Output:

The value of number is 42
The value of result is 42.000000

Example 2: Explicit Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Explicit type conversion example
        double value = 99.99;
        int roundedValue = (int)value;

        NSLog(@"The value of value is %.2f", value);
        NSLog(@"The value of roundedValue is %d", roundedValue);
    }
    return 0;
}

Output:

The value of value is 99.99
The value of roundedValue is 99

Example 3: Narrowing Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Narrowing type conversion example
        double largeValue = 12345.6789;
        float reducedValue = (float)largeValue;

        NSLog(@"The value of largeValue is %.4f", largeValue);
        NSLog(@"The value of reducedValue is %.4f", reducedValue);
    }
    return 0;
}

Output:

The value of largeValue is 12345.6789
The value of reducedValue is 12345.6797

Example 4: Widening Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Widening type conversion example
        char smallValue = 'A';
        int asciiValue = smallValue;

        NSLog(@"The value of smallValue is %c", smallValue);
        NSLog(@"The value of asciiValue is %d", asciiValue);
    }
    return 0;
}

Example 4: Widening Type Conversion

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[]) {
    @autoreleasepool {
        // Widening type conversion example
        char smallValue = 'A';
        int asciiValue = smallValue;

        NSLog(@"The value of smallValue is %c", smallValue);
        NSLog(@"The value of asciiValue is %d", asciiValue);
    }
    return 0;
}

Output:

The value of smallValue is A
The value of asciiValue is 65