%ul和%lu C格式说明符之间有什么区别?

ped*_*ram 10 c format-specifiers

在"C Primer Plus"的示例中,作者使用了%ul格式说明符(在scanf和printf中)用于unsigned long.当我尝试概括问题时,似乎%ul在我的计算机中出错了.但使用%lu解决了这个问题.

实际上,我不想关注问题和代码行,而是想知道%ul和之间的区别%lu.也许我可以弄清楚出了什么问题.

搜索并没有给我一些有用的东西(除了"它们是不同的").

任何解释或链接/参考表示赞赏.

Jon*_*art 36

%lu是正确的,虽然%ul不正确的.

printf格式说明如下形式%[flags][width][.precision][length]specifier.

u是一个说明符,意思是"无符号十进制整数".

l是一个长度修饰符,意思是"长".

长度调节剂在转换之前应该去,这意味着%lu是正确的.

  • `%ul`是正确的,但不会因预期的OP而起作用.它会在末尾打印带有后缀`l`的数字,因为它只是'%u`,`l`超出格式 (14认同)