Since logical && and || need to be evaluated component-wise for vectors, are c and c the only components that need to be evaluated because only b and b were nonzero? What if the RHS of && is a complicated expression(e.g. b&&foo())? Is the statement about evaluating the RHS only when LHS is equal/unequal to 0 meant only apply when both operands are scalar?
//a is (-1,0,-1,0) but should c be now (9,10,9,10) or (9,9,9,9)?
The 1.0 spec states:
"And (&&) will only evaluate the right hand operand if the left hand operand compares unequal to 0. Or (||) will only evaluate the right hand operand if the left hand operand compares equal to 0. For built-in vector types, the operators are applied component-wise"