格式化 unsigned long long 会导致整数溢出

Formatting of an unsigned long long causes an integer overflow

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。

您打印的号码不正确。 %d 说明符用于 int。对 unsigned long long.

使用说明符 %llu

更改为:

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