C machine

Doug Gwyn gwyn at brl-smoke.ARPA
Sat Jan 30 06:01:57 AEST 1988


In article <8728 at ism780c.UUCP> marv at ism780.UUCP (Marvin Rubenstein) writes:
-The problem with a header file defining a type ptrdiff_t is that the the
-defined type must be one of the types in the base C language.  If an
-implementation defines ptrdiff_t such that sizeof(ptrdiff_t) == sizeof(void*)
-then p1-p2 may overflow.

"As with any other arithmetic overflow, if the result does not fit in the
space provided, the behavior is undefined."

It is up to the implementation to choose a reasonable size for ptrdiff_t.

-BTW, the definition of pointer difference in K&R is "if p and q point to
-members of the same array , p-q is the number of elements between p and q."
-One way to interpret this is the following:

Yes, that's been fixed in the proposed ANSI C standard.



More information about the Comp.lang.c mailing list