我永远无法理解如何在C中打印无符号长数据类型。

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

陆printf (" % \ n”,unsigned_foo) 杜printf (" % \ n”,unsigned_foo) printf (" % ud \ n”,unsigned_foo) printf(" %会\ n”,unsigned_foo) printf (" % ld \ n”,unsigned_foo) printf (" % dl \ n”,unsigned_foo)

它们都输出一些-123123123数字而不是我的无符号长。


当前回答

对于int %d

对于长int %ld

对于long long int %lld

对于unsigned long long int %llu

其他回答

格式为%lu。

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

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

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

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

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

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

这将会很有帮助……

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