// test.c #include <stdio.h>
int main() { unsigned long long x = 3264; printf("%llu\n", 5LLu >> (x + 0)); // 5LLU >> (x + 0) == 5 ??? printf("%llu\n", 5LLu << (x + 0)); // 5LLU << (x + 0) == 5 ??? } // $ echo $MACHTYPE; gcc --version; gcc test.c; ./a.out // i486-pc-linux-gnu // gcc (Debian 4.3.2-1.1) 4.3.2 // Copyright (C) 2008 Free Software Foundation, Inc. // This is free software; see the source for copying conditions. There is NO // warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. // 5 // 5 -- Summary: incorrect unsigned long long left/right shift Product: gcc Version: 4.3.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: kaizhu256 at gmail dot com GCC build triplet: i486-pc-linux-gnu GCC host triplet: i486-pc-linux-gnu GCC target triplet: i486-pc-linux-gnu http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41007