Mail Archives: djgpp/1997/06/28/10:37:39

From: Andrew Crabtree <andrewc AT typhoon DOT rose DOT hp DOT com>
Message-Id: <>
Subject: Re: Newbie for loop/data type problem
To: csantill AT lausd DOT k12 DOT ca DOT us (csantill)
Date: Sat, 28 Jun 1997 7:37:31 PDT
Cc: djgpp AT delorie DOT com
In-Reply-To: <>; from "csantill" at Jun 28, 97 1:30 am

> Ok, I know chars are byte values, but
> they seemed to be signed in DJGPP
I think they are signed in most compilers.  GCC gives an option to
make them unsigned as you mention.

>  But, w/the unsigned char flag on, I get an infinite
> loop
Um, you should get an infinite loop with it off also.

> If anybody has a work around (while loop, a mix of C wrapped
> in an inline ASM loop) or any other help would be great;
Nothing so drastic.

> Here's a vague description of my code:
> void stupid_error(char get_some_stupid_vars)
> {
>   char c;
>   for(c=0;c<=255;c++)
>   {
>     /* do some stupid newbie stuff */
>   }
> }
OK - lets assume that the char datatype is an unsigned 8 bit value.
That means the largest number it can store is 255.  Look what happens
in your code as the variable hits 255.  Test for <=, yep 255<=255.  Now,
increment.  Here it will roll to 0.  Now test for <=, yep 0 <= 255.  
Instant infinite loop.

Possible solutions - 

Use an int data type.  
Change the conditions of your loop


- Raw text -

  webmaster     delorie software   privacy  
  Copyright 2019   by DJ Delorie     Updated Jul 2019