#include // most recent version of this code can be obtained at // http://cjb.ie/32-64bug.c or http://cjb.ie/32-64bug.c.txt int main ( int argc, char *argv[] ) { long long a; int b=40; printf( " 550000000000 expected for 85LL<<40,\n%16llx obtained.\n", 85LL<<40 ); printf( " 10000000000 expected for 1<<40 (const expr as printf arg),\n%16llx obtained.\n", 1<<40 ); a=1<<40; printf( " 10000000000 expected for 1<<40 (const expr, precomputed),\n%16llx obtained.\n", a ); printf( "\n" ); printf( " 5500000000000 expected for 85LL<<44,\n%16llx obtained.\n", 85LL<<44 ); a=1<