C语言中%d和%i格式说明符的区别
格式说明符是由初始百分比符号(%)组成的序列,表示格式说明符,该格式说明符用于指定从流中检索的数据的类型和格式,并存储到附加参数所指向的位置。简而言之,它告诉我们要存储哪种类型的数据,要打印哪种类型的数据。
例如,如果我们想使用scanf()和printf()函数读取和打印整数,可以使用%i或%d,但是%i和%d的格式说明符有细微的区别。
%d指定带符号十进制整数,%i指定整数。
%d和%i的行为与printf类似
printf的%i和%d格式说明符没有区别。考虑下面的例子。
输出:
scanf中%d和%i的行为不同
%d假设基数为10,而%i auto检测基数。因此,当与输入说明符一起使用时,这两个说明符的行为是不同的。所以012是10加上%i,但12加上%d。
- %d将整型值作为有符号十进制整数i.e。它接受正数和负数,但值应该是十进制的,否则它将打印垃圾值。(注意:如果输入是像:012这样的八进制格式,那么%d将忽略0并将输入作为12)考虑下面的例子。
-
%i将整数值作为十进制、十六进制或八进制类型的整数值。
十六进制格式输入值时- value由前面的“0x”提供,- value由前面的“0”提供。
考虑下面的例子。
输出:
解释:
a在12时的十进制值是12
b的十进制值12(八进制)是10
c的十进制值12(16进制)是18