CS 330 Lecture 21 – Weak Typing in C
Agenda
- what ?s
- weak typing examples
- array allocation
- big endian
- is negative check for floats
- unions
- “polymorphism” in C
TODO
- Read chapters 1 and 2 of Learn You a Haskell for a Great Good! (Use the free online version.) On a 1/4 sheet, answer these questions:
- What are two ways we can express the integer division of 9 divided by 5?
- Write an expression for the successor of the sucessor of character
'z'
. Also write the value. - What can you say about the operand types that function
:
expects? Function++
? - Define a function named
countreps
that takes in acount
and anumber
. It returns a list withcount
instances ofnumber
preceded by thecount
. For example,countreps 3 10
yields[3, 10, 10, 10]
.
Note
Today we’ll look to some examples of weak typing in C, in which we undermine the type system to do some sometimes perfectly reasonable things. We’ll see why arrays traditionally couldn’t be allocated on the stack via consts, how to do a runtime check for the endianness of a processor, how we can check the negativity of a float, and how one might support a limited form of polymorphism for data structures.
Code
…