How to printf “unsigned long” in C?

柔情痞子 提交于 2019-11-26 08:40:04

问题


I can never understand how to print unsigned long datatype in C.

Suppose unsigned_foo is an unsigned long, then I try:

  • 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)

And all of them print some kind of -123123123 number instead of unsigned long that I have.


回答1:


%lu is the correct format for unsigned long. Sounds like there are other issues at play here, such as memory corruption or an uninitialized variable. Perhaps show us a larger picture?




回答2:


  • %lu for unsigned long
  • %llu for unsigned long long



回答3:


Out of all the combinations you tried, %ld and %lu are the only ones which are valid printf format specifiers at all. %lu (long unsigned decimal), %lx or %lX (long hex with lowercase or uppercase letters), and %lo (long octal) are the only valid format specifiers for a variable of type unsigned long (of course you can add field width, precision, etc modifiers between the % and the l).




回答4:


For int %d

For long int %ld

For long long int %lld

For unsigned long long int %llu




回答5:


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

This will be helpful . . .




回答6:


The format is %lu.

Please check about the various other datatypes and their usage in printf here




回答7:


The correct specifier for unsigned long is %lu.

If you are not getting the exact value you are expecting then there may be some problems in your code.

Please copy your code here. Then maybe someone can tell you better what the problem is.




回答8:


I had the same problem. Try "%ul", it works for me.



来源:https://stackoverflow.com/questions/3209909/how-to-printf-unsigned-long-in-c

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!