String literals have type const char [] in C++ (and char[] in C). In expressions character arrays are implicitly converted to pointers to the first element of the arrays.
So in this statement
if ( "ben" > "BEN" )
there is a comparison pf two pointers one of which has the address of string literal "ben" and the other has the address of string literal "BEN". Usually compilers place string literals in the pool of string literals in the order in which they were encountered. So "ben" has the less address compared with the address of "BEN" because literal "ben" was found by the compiler before literal "BEN".
Take into account that even in this condition
if ( "ben" == "ben" )
the result depends of the compiler options. The compiler can store the string literals either as one string literal or as two separate string literals. So the result can be equal to either true or false.:)