constant expression bug in gcc

Graham Stott grahams@redhat.com
Fri Nov 30 04:41:00 GMT 2001


Peter,

Peter Selinger wrote:
> 
> There is an apparent bug in constant expression evaluation in gcc 2.96.
> 
> Here is a program:
> 
> #include <stdio.h>
> 
> int main() {
>   printf("%d\n", sizeof(unsigned long)-5 );
>   printf("%d\n", (sizeof(unsigned long)-5) >= 0 ? 1 : -1);
> }
> 
> Here is its output:
> 
> % ./test
> -1
> 1
> % uname -a
> Linux caiaphas 2.2.19-7.0.8 #1 Thu Jun 21 04:59:33 EDT 2001 i686 unknown
> % gcc --version
> 2.96
> 
> Please let me know if you need more information.
> Thanks, -- Peter

No more info needed. It is not a bug.

sizeof returns an unsigned integral type (size_t) so the expression
"sizeof (unsigned long) - 5" is itself unsigned, hence the output you
quoted is correct.

Graham



More information about the Gcc-bugs mailing list