【发布时间】:2020-04-11 11:16:51
【问题描述】:
我正在测试 gcc 版本 8.2
gcc 似乎将long long int 视为int。有没有什么办法解决这一问题?
代码如下:
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#include <float.h>
int main(int argc, char** argv) {
printf("INT_MAX : %d\n", INT_MAX);
printf("INT_MIN : %d\n", INT_MIN);
printf("LONG_MAX : %ld\n", (long) LONG_MAX);
printf("LONG_MIN : %ld\n", (long) LONG_MIN);
printf("UINT_MAX : %u\n", (unsigned int) UINT_MAX);
printf("ULLONG_MAX : %lu\n", (unsigned long long int) ULLONG_MAX);
printf("Big Integer : %lu\n", (unsigned long long int) 1234567890123456);
printf("%d\n", sizeof(long long int));
return 0;
}
输出:
INT_MAX : 2147483647
INT_MIN : -2147483648
LONG_MAX : 2147483647
LONG_MIN : -2147483648
UINT_MAX : 4294967295
ULLONG_MAX : 4294967295
Big Integer : 1015724736
8
C:\prog_c\c_pro>gcc --version gcc (MinGW.org GCC-8.2.0-5) 8.2.0 版权所有 (C) 2018 Free Software Foundation, Inc...
【问题讨论】:
-
unsigned long long需要%llu格式,我相信 -
@SteveFriedl 现在可以使用
-
另外,
size_t(sizeof表达式的类型)的正确格式是%zu。 -
始终使用
-Wall编译并阅读警告
标签: c gcc 64-bit long-integer