Sorry, yes: &x[-1] == (int *)x + (int *)4*(int *)-1
would be correct/true, and probably simplest; although equivalent to either: &x[-1] == (int *)x + (int *)((int)4*(int)-1) or: &x[-1] == (int *)x + (int *)((size_t)4*(int)-1) or: &x[-1] == (int *)x + (int *)((size_t)4*(size_t)-1)