【发布时间】:2012-05-26 16:56:04
【问题描述】:
我在使用printf 函数打印unsigned long long int 类型的值时遇到问题
我不知道出了什么问题。我在 Windows 7 Professional 64 位上使用 Dev-Cpp 4.9.9.2 和 Visual Studio 2010 Professional(我知道它不是 C 编译器,但无论如何,想尝试一下)。对于显示,我使用了%llu 修饰符(根据How do you printf an unsigned long long int(the format specifier for unsigned long long int)?),但我也尝试了 I64d,但没有任何效果...
首先,我只想打印unsigned long long int 的最小值和最大值(使用来自limits.h 的ULONG_MAX)
printf("unsigned long long int: \n%llu to %llu \n\n", 0, ULONG_MAX);
返回:
unsigned long long int:18446744069414584320 到 1580552164021 (Dev-Cpp)
unsigned long long int: 18446744069414584320 to 0 (Visual Studio)
然后我尝试使用printf 打印两个零
printf("unsigned long long int: \n%llu to %llu \n\n", 0, 0);
返回:
unsigned long long int: 0 到 1580552164021 (Dev-Cpp)
unsigned long long int: 0 到 0 (Visual Studio)
还尝试了两个ULONG_MAX 值
printf("unsigned long long int: \n%llu to %llu \n\n", ULONG_MAX, ULONG_MAX);
返回:
unsigned long long int:18446744073709551615 到 1580552164021 (Dev-Cpp)
unsigned long long int: 18446744073709551615 到 0 (Visual Studio)
为什么会这样?能给我解释一下吗?
【问题讨论】:
标签: c syntax printf unsigned-long-long-int