我永远无法理解如何在C语言中打印unsigned long
数据类型。
假设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
类型。
%lu
管用了,谢谢。之前一定发生了什么事情导致它不能用。 - bodacydo%lu
时。从技术上讲,这是未定义的行为,但实际上变量具有无法预测的值,这些值被传递给printf,然后由printf解释为无符号值。我猜bodacydo最初的问题是流程到达了一个不正确的printf调用,而不是预期的那个... - R.. GitHub STOP HELPING ICE%lu
是一个有效的转换说明符,而%ul
则不是。%lu
可以拆分为:% 表示开始一个“转换说明符”;l 是长度修饰符,表示 "[unsigned] long int";u 是转换说明符,用于将unsigned int
以十进制形式打印出来。由于我们使用了长度修饰符 l,它接受一个unsigned long int
。这些字母的顺序必须是这样的:百分号、长度、转换。您可以添加一些其他选项,如宽度和精度,但字母的顺序必须按照上述要求。建议查看相关文档,因为它详细记录了所有内容! - Thanatos