[geeks] Quick C question

Joshua D Boyd jdboyd at cs.millersville.edu
Thu Jul 25 09:26:28 CDT 2002


On Thu, Jul 25, 2002 at 10:22:19AM -0400, Dave McGuire wrote:

>   It didn't?  Hmm, that's weird.  It's my understanding that it should
> have.

Using a seperate test program, here is an exact program, and the
error:
jdboyd at cs ~ 48 > cat test.c
void main () {
        unsigned long s;
        s = 0;
        s = s * (unsigned int)2891336453 + 1;
}
jdboyd at cs ~ 49 > g++ test.c
test.c: In function `int main(...)':
test.c:4: warning: decimal integer constant is so large that it is
unsigned
jdboyd at cs ~ 50 >

Changeing from unsigned int to unsigned long, ala:
s = s * (unsigned long)2891336453 + 1;
does change the warning.

Now, if I change that to:
jdboyd at cs ~ 48 > cat test.c
void main () {
        unsigned long s;
        s = 0;
        s = s * 2891336453UL + 1;
}
jdboyd at cs ~ 49 > 

then we are good to go.

-- 
Joshua D. Boyd



More information about the geeks mailing list