[net.bugs.4bsd] Parenthesis error in 4.2bsd c compiler

addw@root44.UUCP (Alain Williams) (09/04/84)

<gobble-gobble>
I ran the following on a few machines:
main()
{
	unsigned u, u2;
	int	m_7 = -7, two = 2, i, j;
	u = m_7;
	i = (u % two);
	j = ((int) u) % two;
	printf("%u %d %d %d %d\n", u, (int) (u%two), i, (u%two), j);
}

Machine, O/S	Result
Vax 4.2bsd	4294967289 -1 1 1 -1
PDP11/44 S III	65529 1 1 1 -1
68000 S 5	4294967289 1 1 1 -1

Note the second number printed in each case.
Why does the Vax treat '(int) (u%two)' as '((int) u) % two' ????
Most annoying.

	Alain Williams,
	Root Computers Ltd, London.
	{ENGLAND}!hirst1!root44!addw
	edai!root44!rootis!addw
	ukc!root44!addw