Q:

C if statement with && - Which function will execute first?

If I have an if statement in C that looks like:
if( function1() > 0 && function2() > 0 ){

    //blah

}

Which function will execute first and will it always execute in that order? 

A:

Here function1() is guaranteed to execute first.
The && operator is a short-circuiting operator. function2() won't even be called unless the result of function1() is greater than zero.
From the C99 standard:

Unlike the bitwise binary & operator, the && operator guarantees left-to-right evaluation;
  there is a sequence point after the evaluation of the first operand. If the first operand
  compares equal to 0, the second operand is not evaluated.

A:

function1, and yes. function2 will be called if and only if the previous condition is true.
This is called "short-circuiting", and it is essential, for example for a statement like this: if (p != 0 && *p == 'X') We can be certain that p never gets dereferenced if it is null.

A:

function1() will be executed first and if its result is less than or equal to 0 function2() is not executed at all.

