在许多网站中(如:GeeksForGeeks:C语言中%d和%i格式说明符之间的差异,或TutorialsPoint:C语言中-d和%i格式化说明符之间的区别(,他们说:在CCD_ 1中;%d
取整数值作为有符号十进制整数%i
将整数值作为十进制、十六进制或八进制的整数值。
使用单词";签名的";仅用于%d
,不用于%i
我希望%i
只接受无符号值但是%i
与负数配合使用非常好。那么CCD_ 8为什么没有人提到";签名的";为了它?
使用单词"签名的";只针对%d,而不是针对%i我希望%i只接受无符号值,但%i与负数完全匹配数字。那么,为什么%i没有人提到单词";签名的";为了它?
我不会说"没有人";。%d
:的语言标准
匹配一个可选的带符号十进制整数。[…]相应的参数应为指向带符号整数的指针。
并且对于scanf
0:
匹配一个可选的带符号整数。[…]相应的参数应为指向带符号整数的指针。
关于输入表示和相应指针参数的目标的有符号性的语言对两者来说是相同的。
我只能推测为什么任何网页作者描述%i
的含义都不如你想要的或标准的清晰和准确。也许有些人对十六进制格式的%x
需要一个指向无符号整数的指针这一事实感到困惑。也许有些是草率的。也许有些人懒散地依赖于其他网页的不精确语言,而不是主要来源。
"整数值作为十进制、十六进制或八进制类型的整数值"-->;否,不是类型,而是使用十进制、八进制或十六进制文本前缀。
CCD_ 13的匹配类型仍然是指向CCD_ 14的指针。
它允许";0x123";而CCD_ 15仅看到a为0并且在CCD_。