#include <stdio.h>
void x()
{
long long l64 = -2;
long long res = l64 / sizeof(short);
printf("x) arch=%d.bit, sizeof(long long) = %d, res = %lld = 0x%llX\n", (unsigned)sizeof(void*) * 8, (unsigned)sizeof(long long), res, res);
}
void y()
{
long long l64 = -2;
long long res = l64 / ( (unsigned long)sizeof(short) );
printf("y) arch=%d.bit, sizeof(long long) = %d, res = %lld = 0x%llX\n", (unsigned)sizeof(void*) * 8, (unsigned)sizeof(long long), res, res);
}
void z()
{
long long l64 = -2;
long long res = ( (unsigned long long)l64 ) / sizeof(short);
printf("z) arch=%d.bit, sizeof(long long) = %d, res = %lld = 0x%llX\n", (unsigned)sizeof(void*) * 8, (unsigned)sizeof(long long), res, res);
}
int main(int argc, char** argv)
{
x();
y();
z();
}
---
gcc -m32 x.c && ./a.out
x) arch=32.bit, sizeof(long long) = 8, res = -1 = 0xFFFFFFFFFFFFFFFF
y) arch=32.bit, sizeof(long long) = 8, res = -1 = 0xFFFFFFFFFFFFFFFF
z) arch=32.bit, sizeof(long long) = 8, res = 9223372036854775807 = 0x7FFFFFFFFFFFFFFF
gcc -m64 x.c && ./a.out
x) arch=64.bit, sizeof(long long) = 8, res = 9223372036854775807 = 0x7FFFFFFFFFFFFFFF
y) arch=64.bit, sizeof(long long) = 8, res = 9223372036854775807 = 0x7FFFFFFFFFFFFFFF
z) arch=64.bit, sizeof(long long) = 8, res = 9223372036854775807 = 0x7FFFFFFFFFFFFFFF
|