What does compile-time type checking do? [6 marks] a. Allow a single type for each expression b. Check for type consistency of each operator at compile time c. Report where in source code the error is found d. Catch all errors before runtime Which of the following type errors can be caught at compile time? [6 marks] a. adding an integer with a string b. An array being accessed out-of-bound c. Null pointer dereference d. A value being casted to an unrelated type e. Dividing a value by zero.