【发布时间】:2011-04-23 07:13:36
【问题描述】:
我在这里做错了什么?
$ cat size.c
#include<stdio.h>
#include<math.h>
int main() {
printf ("sizeof unsigned int = %d bytes.\n", sizeof(unsigned int));
printf ("sizeof unsigned long long = %d bytes.\n", sizeof(unsigned long long));
printf ("max unsigned int = %d\n", (int)(pow(2, 32) - 1));
printf ("max unsigned long long = %lld\n", (unsigned long long)(pow(2, 64) - 1));
}
$ gcc size.c -o size
$ ./size
sizeof unsigned int = 4 bytes.
sizeof unsigned long long = 8 bytes.
max unsigned int = 2147483647
max unsigned long long = -1
$
我希望 18446744073709551615 作为输出,而不是最后一行的 -1。
好的,我完全错过了 232 - 1 的错误值,应该是 4294967295,而不是 2147483647。现在事情变得更有意义了。
【问题讨论】:
标签: c types long-integer