Conversions

From Coder Merlin
(Redirected from W1039)
Boeing, N780BA, B747-409(LCF) Dreamlifter

Prerequisites[edit]

Introduction[edit]

In some cases we have a value of one type but want to use it in another context, as a different type. Depending on language, this may be referred to as "type conversion", "type casting", or "type coercion". Often, type casting refers to the mere re-interpretation of existing bits, while type conversion creates a new representation of data as a different type.

Type Casting[edit]

When type casting, we consider an existing bit pattern as other than that originally declared. For example, consider the following C program:

 1#include <stdio.h>
 2int main(int argc, char *argv[]) {
 3  int c = 65;
 4  printf("The value is: %i", c);
 5  printf("The value is: %c", c);
 6
 7  int d = -c;
 8  printf("The value is: %i\n", d);
 9  printf("The value is: %u\n", d);
10  return 0;
11}

On line 3, we declare an integer variable, "c" and assign the initial value, 65. On line 4, we print the integer value. On line 5, we use the printf command to indicate that we actually have a character, rather than an integer. The existing bit pattern is then re-interpreted and the character "A" is printed. (If you don't remember why it's "A", review W1033 Character Encoding.

Type Conversion[edit]

Type conversion is a more extensive process than type casting because it involves the creation of a new value based on an existing value of a different type. As we learned previously, Doubles and Integers are stored using very different bit patterns, i.e. 1.0 (a Double) is very different from 1 (an Int). But we'll encounter many situations where we'll want to perform an operation on values of more than one type, for example, and an Int to a Double. In these cases, we'll need to form a new value of the appropriate type using an existing value. Let's look at an example in Swift:


CoderMerlin™ Code Explorer: W1039 (1)

Run the above. What happens on line 3? Swift is protecting us from accidentally adding operands of different types. If we choose to do so, we'll need to do so explicitly. We can accomplish this by creating a new, unnamed, temporary constant of the desired type as follows:


CoderMerlin™ Code Explorer: W1039 (2)

Pay close attention to line 3, where we create a Double from n, and then add the result to the Double d.


CoderMerlin™ Code Explorer: W1039 (3)

We use the same methodology, i.e. creating new, temporary constants for other types of conversions, such as from Int to String:


CoderMerlin™ Code Explorer: W1039 (4)

It's important to note that the operators will be interpreted in accordance with the operands after any conversions have taken place. As such, the operator on line 3 above specifies concatenation rather than addition.


CoderMerlin™ Code Explorer: W1039 (5)


Key Concepts[edit]

KeyConceptsIcon.png
Key Concepts
  • Changing the type of a value may be referred to, depending on language, as "type conversion", "type casting", or "type coercion".
  • Type casting refers to the mere re-interpretation of existing bits
  • Type conversion creates a new representation of data as a different type
  • Operators will be interpreted in accordance with the operands after any conversions have taken place

Exercises[edit]

ExercisesIcon.png
Exercises

After completing Printing and String Interpolation:


  •  M1039-10  Complete  Merlin Mission Manager  Mission M1039-10.
  •  M1039-11  Complete  Merlin Mission Manager  Mission M1039-11.

References[edit]


Experience Metadata

Experience ID W1039
Unit Encoding & data types
Knowledge and skills §10.711
Topic areas Primitive types
Classroom time 20 m
Study time 30 m
Acquired knowledge understanding type casting and type conversions with regard to primitive types
Acquired skill ability to identify the appropriate target type for a conversion
ability to perform conversions to an appropriate type
Additional categories


CoderMerlin™ proudly recommends:
HintIcon.png

Your purchase via these links helps keep  Coder Merlin™ 's orbuculum ablaze. As an Amazon Associate we earn from qualifying purchases. Thank you for your support!


Designed with pride in Silicon Valley, CA, USA