[net.bugs.2bsd] C Compiler Bug

keenan@inmet.UUCP (05/29/85)

Here is a small program that demonstrates what I think is a bug in the
BSD2.9 C compiler. I guess its not appropriate to use a long as the
index to an array, but it should just be cast to an integer, and not
affect the postdecrement. Instead the decrement treats the variable as
an integer.  The results are also presented. Is this a bug, or is my
code just incorrect?

#include <stdio.h>
int arr[100];
int x;
long p_end;
main()
{
  printf("Autodecrement inside array reference\n");
  p_end = 0l;
  printf("before %ld\n", p_end);
  x = arr[p_end--];
  printf("after %ld\n", p_end);
}

++++++++++++++++++++++++++ OUTPUT +++++++++++++++++++++++++
Autodecrement inside array reference
before 0
after 65535

--keenan ross		UUCP:     {bellcore,ihnp4}!inmet!keenan
 Intermetrics, Inc.	INTERNET: ima!inmet!keenan@CCA-UNIX.ARPA
 733 Concord Ave.
 Cambridge, MA  02138	PHONE:    (617) 661-1840