I suppose what you object to here is more the naming standard used than the expression itself? Definitely agree that Java has better recommended naming standards and I would use such names if I were to use C++ today.
No - the objection is to C's "," operator. In this case, instead of getting the 4-argument is_edge, I get the 2-argument is_edge, and then the return value of is_edge is replaced by the random values of the uninitialized h, vnum. It's a case of too many forms of syntactic sugar. The result is that nearly anything compiles, no matter how silly.
Ok I see it now :) Wow, hope the compiler issues some kind of warning here at least on pedantic levels.