Compilers (CS362 2002F)

Class 22: Type Checking, Concluded

Back to Type Equivalence. On to Coding Style.

Held Friday, October 18, 2002

Summary

Today we continue our explorations of type checking and type equivalence with some examples from C and some further questions.

Notes

Overview

Fun with C

I thought you might enjoy this quote from Kernighan & Ritchie (2nd edition, p. 198).

Many operators cause conversions and yield result types in a similar way. The effect is to bring operands into a common type, which is also the type of the result. This pattern is called the usual arithmetic conversions

First, if either operand is a long double, the other operand is converted to a long double.

Otherwise, if either operand is a double, the other is converted to double.

Otherwise, if either operand is a float, the other is converted to float.

Otherwise, the integral promotions are performed on both operands; then, if either operand is unsigned long int, the other is converted to unsigned long int.

Otherwise, if one operand is long int and the other is unsigned int, the effect depends on whether a long int can represent all values of an unsigned int; if so, the unsigned int operand is converted to long int; if not, both are converted to unsigned long int.

Otherwise, if one operand is long int, the other is converted to long int.

Otherwise, if one operand is unsigned int, the other is converted to unsigned int.

Otherwise, both operands have type int.

Wasn't that fun?

More Type Equivalence

More Fun with C

 

History

Thursday, 29 August 2002 [Samuel A. Rebelsky]

Friday, 18 October 2002 [Samuel A. Rebelsky]

 

Back to Type Equivalence. On to Coding Style.

Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Fri Dec 6 10:38:20 2002.
The source to the document was last modified on Fri Oct 18 10:19:07 2002.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS362/2002F/Outlines/outline.22.html.

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Glimmer Labs: The Grinnell Laboratory for Interactive Multimedia Experimentation & Research
glimmer@grinnell.edu