403

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

假设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我的数字。

4

7 回答 7

590

%lu是正确的格式unsigned long。听起来这里还有其他问题,例如内存损坏或未初始化的变量。也许向我们展示一张更大的图片?

于 2010-07-09T04:50:19.387 回答
45

对于整数 %d

对于长整数 %ld

对于long long int %lld

对于unsigned long long int %llu

于 2017-04-07T10:31:44.793 回答
37
  • %lu无符号
  • %llu对于unsigned long long
于 2014-07-12T13:56:19.740 回答
23

在您尝试的所有组合中,%ld并且%lu是唯一有效的 printf 格式说明符。%lu(long unsigned decimal), %lxor %lX(long hex with lowercase or uppercase letters), and %lo(long octal) 是 unsigned long 类型变量的唯一有效格式说明符(当然,您可以在%l)。

于 2010-07-09T06:00:14.360 回答
10
int main()
{
    unsigned long long d;
    scanf("%llu",&d);
    printf("%llu",d);
    getch();
}

这会很有帮助。. .

于 2013-06-22T18:13:47.373 回答
9

unsigned long 的正确说明符是%lu.

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

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

于 2010-07-09T05:09:04.710 回答
9

格式为%lu.

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

于 2010-07-09T06:08:13.523 回答