Consider the following function written in the C syntax: In each of the cases below, assume that the initial values of the variables are x=1, y=2, and z=3. Write down the values of x, y, and z after the following calls to foo(). If necessary, assume that output parameters are copied back to arguments in the left-to-right order.
(a) z = foo(x,y) where all parameters are passed by value
(b) z = foo(x,y) where all parameters are passed by reference
(c) z = foo(x,y) where all parameters are passed by value-result
(d) z = foo(y,y) where all parameters are passed by value
(e) z = foo(y,y) where all parameters are passed by reference
(f) z = foo(y,y) where all parameters are passed by value-result