[comp.sys.att] Am I seeing things?

pete@tsc.dec.com (Pete Schmitt) (06/24/88)

When I run the following code on a VAX running Ultrix 2.2 I get a
correct output of:
			2 to the 4th = 16

When I run it on a 6300+ running V2.5 unix I get:

			2 to the 0th = 4

Where is the problem?  Is this a bug?

The code:


/* lpowd.c */
main()
{
	long b,e,a,lpow();
	b = 2;
	e = 4;
	a = lpow(b,e);
	printf("%d to the %dth = %d\n",b,e,a);
}
	
long lpow(lnum, n)
	
	long lnum;
	long n;
	{
		long p;
		p=1;
		for ( ; n > 0; --n)
			p *= lnum;
		return (p);
	}

mmengel@cuuxb.ATT.COM (~XT4103000~Marc Mengel~C25~G25~6184~) (06/27/88)

In article <547@tsc.dec.com> pete@tsc.dec.com (Pete Schmitt) writes:
>When I run the following code on a VAX running Ultrix 2.2 I get a
>correct output of:
[example output deleted]
>Where is the problem?  Is this a bug?

/* lpowd.c */
main()
{
	long b,e,a,lpow();
	b = 2;
	e = 4;
	a = lpow(b,e);
	printf("%d to the %dth = %d\n",b,e,a);
*****************^SPLAT  should be %ld for a long int, you are printing
			 the low and high word of the 2, then the low
			 word of the 4...
}
	
long lpow(lnum, n)
	
	long lnum;
	long n;
	{
		long p;
		p=1;
		for ( ; n > 0; --n)
			p *= lnum;
		return (p);
	}


-- 
 Marc Mengel			       
				
 attmail!mmengel	
 {lll-crg|mtune|ihnp4}!cuuxb!mmengel