格式化无符号长long会导致整数溢出

时间:2015-12-06 19:04:19

标签: c mingw number-formatting unsigned-long-long-int

unsigned long long类型并不像我预期的那样工作。这是我的简单代码:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    unsigned long long a = 2932306814;
    printf("a = %d\n", a);
    return EXIT_SUCCESS;
}

我得到以下输出:

a = -1362660482

已使用的gcc作为mingw的一部分安装,版本为4.8.1。

1 个答案:

答案 0 :(得分:3)

您没有正确打印该号码。 %d说明符适用于int。使用%llu的说明符unsigned long long

更改为:

printf("a = %llu\n", a);