[comp.sys.mac] Long integers

gtchen@faline.bellcore.com (George T. Chen) (09/11/87)

Has anyone had this problem?

...
   void get_value(size)
   long *size;
   {   ...(do some processing)...
       printf("%ld",*size);
   }

   void routine()
   {   ...(some declarations)...
       long size;
       ...(some other stuff)....
       get_value(&size);
       printf("%ld",size);
   }

This routine dies on me!  (Well not dies but doesn't work)  For some
reason, size is correct in the get_value routine, but seems to be
int(size/256.)*256 in the calling routine.  Almost as if the least
significant byte became 0.  However, if I now change routine to

   void routine()
   {   ...(same declarations)...
       long garbage,size;
       ...(same other stuff)....
       get_value(&size);
       printf("%ld",size);
       garbage = 0;	/* So that garbage is allocated memory instead */
			/* of being ignored by the compiler */
   }

then everything works fine and dandy.  What's going on?  Someone told
me it might be a problem with odd and even bytes, but I don't quite
understand that.  All help appreciated.



-- 
+-----------------------------------------------------------------------------+
|What's a .signature? Life is an equation whose only solutions are irrational |
|gtchen@thumper.bellcore.com ! gtchen@romeo.caltech.edu ! gtchen@where.am.i?. |
+-----------------------------------------------------------------------------+