Understanding poorly written code, 2nd year CS past paper
The following code is part of the past exam papers for a 2nd year C and C++ module. The task is to describe what the following piece of code does. I've written the code exactly as presented, with some comments added by myself.    

    int g(int * y, unsigned size, int z) {
        int tmp = y[0];
        // what type is unsigned size? Int I presume. Why would you add an int to an array of ints?
        int * b = y + size; 
        y[0] = z;
        // I have the most difficulty understanding the following.
        while (1) if (*(--b)==z){y[0] = tmp; return b - y;};
        // are the following 3 lines ever even reached?
        y[0] = tmp;
        if (tmp == z) return 0;
        else return -1;
    }
Understanding poorly written code, 2nd year CS past paper
===

The following code is part of the past exam papers for a 2nd year C and C++ module. The task is to describe what the following piece of code does. I've written the code exactly as presented, with some comments added by myself.    

    int g(int * y, unsigned size, int z) {
        int tmp = y[0];
        // what type is unsigned size? Int I presume. Why would you add an int to an array of ints?
        int * b = y + size; 
        y[0] = z;
        // I have the most difficulty understanding the following.
        while (1) if (*(--b)==z){y[0] = tmp; return b - y;};
        // are the following 3 lines ever even reached?
        y[0] = tmp;
        if (tmp == z) return 0;
        else return -1;
    }