我们平时用printf函数打印整数,用的是%d。你可能会问:整型是int(英文单词integer的缩写),为什么整型的格式说明符不是%i?
这是因为计算机中对整数的表达,会很关注整数是用二进制、八进制、十进制还是十六进制的形式来表达。我们一般情况下,打印十进制,十进制的英文是decimal,所以输出十进制数的格式化说明符里取decimal的首字母,为%d。
另外,其实C语言里也有%i这个格式说明符,在printf函数里用%i和用%d,效果没有区别,都是以十进制形式打印。但它们在scanf函数的用法里有区别。
sacnf函数里,%d只认识十进制数。但%i可以根据输入的整数的进制形式,识别到你输入的八进制(数字0开头,比如011),十进制和十六进制(0x开头)。
不过,我们平时用printf打印十进制数时,还是推荐用%d。因为如果你习惯或者失误地在整数最前面误打了一个0,那会被误识别成了八进制。
不同整数进制的格式化说明符:
十进制:%d
八进制: %o (取“八进制”的英文单词octal的首字母o)
十六进制(字母小写):%x (取“十六进制”的英文单词hex中的字母x)
十六进制(字母大写):%X