Compilers (CS362 2004S)

Class 27: Type Checking (3): Conclusion

Back to Type Checking (2): Type Equivalence. On to Stack Frames (1).

Held: Monday, 5 April 2004

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

Related Pages:

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?

Type Equivalence

More Type Equivalence

Back to Type Checking (2): Type Equivalence. On to Stack Frames (1).

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 Wed May 5 11:47:10 2004.
The source to the document was last modified on Tue Jan 20 23:06:46 2004.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS362/2004S/Outlines/outline.27.html.

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

Samuel A. Rebelsky, rebelsky@grinnell.edu