in old C, f(a, b) int a; char b; { ... } actual parameters for b were always promoted to int (since prototypes weren't available, and the compiler didn't maintain a file of the types of parameters to internal and external functions, it had to assume int for char, double for float etc.)