Jeff Abrahamson on 6 Dec 2003 11:51:02 -0500


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

[PLUG] printf and unsigned long


What am I doing wrong here?

  /*  int.c  */
  #include <stdio.h>

  int
  main(int argc,
       char *argv[])
  {
	  signed long SL;
	  unsigned long UL, UL2;

	  SL = -1;
	  UL = (unsigned long)SL;
	  printf("SL=%ld, UL=%ld\n", SL, UL);

	  UL2 = ~0;
	  printf("SL=%ld, UL=%ld\n", SL, UL);

	  return 0;
  }

Compiling and running,

  jeff@asterix:int-cast $ gcc -Wall int.c -o int && ./int
  SL=-1, UL=-1
  SL=-1, UL=-1
  jeff@asterix:int-cast $ 

I would expect at least the second line to show UL equal to a very
large integer, certainly something non-negative.

-- 
 Jeff

 Jeff Abrahamson  <http://www.purple.com/jeff/>
 GPG fingerprint: 1A1A BA95 D082 A558 A276  63C6 16BF 8C4C 0D1D AE4B

Attachment: pgpp7dMm26OBJ.pgp
Description: PGP signature