Mirco Lorenzoni <[EMAIL PROTECTED]> writes: > Can a pointer appear in a C/C++ relational expression which doesn't test the > equality (or the inequality) of that pointer with respect to another pointer?
Yes. > For example, are the comparisons in the following program legal code? No. > /* test.c */ > #include <stdio.h> > > int main(int argc, char* argv[]) > { > void *a, *b; > int aa, bb; > > a = &aa; > b = &bb; > > printf("a: %p, b: %p\n", a, b); > if (a < b) Because 'a' and 'b' are not part of the same array, the behaviour is undefined. However, you can say char a[100]; if (a + 3 >= a + 6) abort (); which has defined behaviour (does not call abort()).