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

How to printf “unsigned long” in C?

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

假设unsigned_foounsigned long,那么我尝试:

  • printf("%lu
    ", unsigned_foo)
  • printf("%du
    ", unsigned_foo)
  • printf("%ud
    ", unsigned_foo)
  • <5233>
  • printf("%ld
    ", unsigned_foo)
  • printf("%dl
    ", unsigned_foo)

并且所有这些都打印了某种-123123123而不是我拥有的unsigned long


%luunsigned long的正确格式。听起来这里还有其他问题,例如内存损坏或未初始化的变量。或许可以向我们展示更大的图景


  • %lu表示无符号长整数
  • %llu表示无符号长整型


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


对于int %d

对于long int %ld

对于long long int %lld

对于unsigned long long int %llu


1
2
3
4
5
6
7
int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

这会很有帮助。 。 。


格式为%lu

请在此处查看printf中的各种其他数据类型及其用法


unsigned long的正确说明符是%lu

如果您没有得到预期的确切值,那么您的代码可能会出现一些问题。

请在此处复制您的代码。那么也许有人可以更好地告诉你问题是什么。


我有同样的问题。试试"%ul",它对我有用。