Public bug reported:
Binary package hint: gcc-4.2
Release:
Description: Ubuntu 8.04
Release: 8.04
Version information:
gcc-4.2:
Installed: 4.2.3-2ubuntu7
Candidate: 4.2.3-2ubuntu7
Version table:
*** 4.2.3-2ubuntu7 0
500 http://us.archive.ubuntu.com hardy/main Packages
100 /var/lib/dpkg/status
Description:
Signed/unsigned comparisons yield unexpected results in some cases. C
code that exercises this is appears below. The expected result (tested
on previous versions of gcc) is that it will print the gcc version and
nothing else.
#include <stdio.h>
int main() {
long l = 0L;
unsigned long ul = 0x80000000L;
int i = 0;
unsigned int ui = 0x80000000;
short s = 0;
unsigned short us = 0x8000;
char c = 0;
unsigned char uc = 0x80;
printf("Using gcc version %s\n\n", __VERSION__);
if (l > ul)
printf("long 0x%08lx > unsigned long 0x%08lx evaluates to true\n", l,
ul);
if (i > ui)
printf("int 0x%08x > unsigned int 0x%08x evaluates to true\n", i, ui);
if (s > us)
printf("short 0x%04x > unsigned short 0x%04x evaluates to true\n", s,
us);
if (c > uc)
printf("char 0x%02x > unsigned char 0x%02x evaluates to true\n", c, uc);
if (((long) 0L) > ((unsigned long) 0x80000000L))
printf("((long) 0L) > ((unsigned long) 0x80000000L) evaluates to
true\n");
if (((int) 0) > ((unsigned char) 0x8000000))
printf("((int) 0) > ((unsigned int) 0x8000000) evaluates to true\n");
if (((char) 0) > ((unsigned short) 0x8000))
printf("((short) 0) > ((unsigned short) 0x8000) evaluates to true\n");
if (((char) 0) > ((unsigned char) 0x80))
printf("((char) 0) > ((unsigned char) 0x80) evaluates to true\n");
return 0;
}
$ gcc -Wall test.c -o test
$ ./test
Using gcc version 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
short 0x0000 > unsigned short 0x8000 evaluates to true
char 0x00 > unsigned char 0x80 evaluates to true
** Affects: gcc-4.2 (Ubuntu)
Importance: Undecided
Status: New
--
incorrect signed/unsigned conversions for short and char
https://bugs.launchpad.net/bugs/237134
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs