#include <stdio.h>
#include <math.h>
#include <limits.h>
int main(void)
{
unsigned long x = 0;
x = x ^ ~x;
printf("%d\n", x);
x = (unsigned long)pow(2, sizeof(x)*8);
printf("%d\n", x);
x = ULONG_MAX;
printf("%d\n", x);
return 0;
}
我在Windows 7上使用CodeBlocks12.11和MinGW 4.7.0-1。由于某些原因,我无法使变量x
获取最大可能的十进制值表示。为什么会发生这种情况,我确信x = ULONG_MAX
应该有效,但它也会产生-1
,现在肯定是不对的!我也尝试在Code-Blocks之外编译它。
我在这里缺少什么?
答案 0 :(得分:9)
您必须使用u
打印无符号变量。 long以l
为前缀,因此在这种情况下您需要lu
。
printf("%lu\n", x);