Gabriel Dos Reis wrote:

It highly depends on what you define to be pointer arithmetic.

Given the conversions

  pointer -> integer type
  integer type -> pointer
  T* -> U*
Yes, but the only defined semantics of these conversions is that you get the same pointer back, you cannot say anything else about the values. If you add one to the integer, you have no assurance that it has anything to do with adding one to the pointer. Yes, it probably will, but there is no guarantee in the standard.

I think your sentence is way to restrictive and does not capture C
models.
Well part of the trouble is that there are really two models here, the one in the standard, and the one that everyone expects and which is by and large the one
that is implemented.

Richard, to resolve this issue, we need to be more precise about our
mappings for

  pointer -> integer type
  integer type -> pointer
  T* -> U*

conversions.  This is not an issue to resolved in isolation, piece meal.
There is no obligation standard-wise to say anything at all about these conversions, other than they are value preserving, i.e. if you convert a pointer to an integer that is large enough, and back to a pointer, you get the pointer back. As far as I
know nothing more can be said.

-- Gaby



Reply via email to