在" C Primer Plus"的示例中,作者使用%ul
格式说明符(在scanf和printf中)用于 unsigned long 。当我尝试概括问题时,似乎%ul
在我的计算机中出错了。但是使用%lu
解决了这个问题。
实际上,我想知道%ul
和%lu
之间的区别,而不是关注问题和代码行。也许我能弄明白什么是错的。
搜索并没有给我一些有用的东西(除了"它们不同")。
感谢任何解释或链接/参考。
答案 0 :(得分:32)
%lu
是正确的,而%ul
不正确。
printf
格式说明符的格式为%[flags][width][.precision][length]specifier
。
u
是说明符,表示“无符号十进制整数”。
l
是一个长度修饰符,意思是“长”。
length 修饰符应该在转换说明符之前,这意味着%lu
是正确的。