如何打印“unsigned long”在C语言中?

我永远无法理解如何在C中打印unsigned long数据类型。

假设unsigned_foo是一个unsigned long,那么我尝试:

  • printf("%lu\n", unsigned_foo)
  • printf("%du\n", unsigned_foo)
  • printf("%ud\n", unsigned_foo)
  • printf("%ll\n", unsigned_foo)
  • printf("%ld\n", unsigned_foo)
  • printf("%dl\n", unsigned_foo)

它们都打印某种-123123123数字,而不是我所拥有的unsigned long

881995 次浏览

%luunsigned long的正确格式。听起来好像还有其他问题,比如内存损坏或未初始化的变量。也许给我们展示一个更大的图景?

unsigned long的正确说明符是%lu

如果您没有得到您所期望的确切值,那么您的代码中可能存在一些问题。

请把代码复制到这里。也许有人能更好地告诉你问题出在哪里。

在您尝试的所有组合中,%ld%lu是唯一有效的printf格式说明符。%lu(长无符号十进制)、%lx%lX(长十六进制,小写或大写字母)和%lo(长八进制)是unsigned long类型变量的唯一有效格式说明符(当然,您可以在%l之间添加字段宽度、精度等修饰符)。

格式为%lu

请检查printf 在这里中的各种其他数据类型及其用法

int main()
{
unsigned long long d;
scanf("%llu",&d);
printf("%llu",d);
getch();
}

这将会很有帮助……

  • %lu用于无符号长
  • %llu用于未签名的long long

对于int %d

对于长整型 %ld

对于Long Long int %lld

对于Unsigned long long int %llu