Yeah, they can be tricky to read sometime. The only reason I've ever heard for writing code like that is to prevent accidental assigning in an if block. For instance if(ptr = 0) compiles fine in C and is almost certainly not what you want, but if(0 = ptr) is a compile error.