When I doing an assignment of mine, I found the output of my Mac and school Solaris system is different which should be the same.
After a series of testing, I found that unsigned long does not work on solaris. It works same as unsigned int.
Look at the C code here:
/* Author Name: Need-Being Modification Date: 17/08/11 File Description: Test unsigned int and unsigned long */ int main() { unsigned int a = 0; unsigned long b; a = ~a; /* Make it maximun of unsigned int */ b = a; b += 1; printf("%u\t%lu\t%s\n", a , b, (a < b)?"Works":"Does not work"); printf("%d\t%d\n", sizeof(unsigned int), sizeof(unsigned long)); return 0; }
The output should be “4294967295 4294967296 Works” and “4 8”.
However, the actual output is
$ a.out 4294967295 0 Does not work 4 4
The unsigned long behaves the same as unsigned int.
Test is processed on a sparc machine in my faculty:
$ uname -a SunOS banshee 5.10 Generic_144488-17 sun4u sparc SUNW,Sun-Fire-V240
Please use “unsigned long long” to have 64-bit integer.
I really like it when individuals arrive collectively and share opinions, excellent weblog, maintain it up.
Thanks a lot.