C 为什么%d代表整数?
我知道这听起来效率不高,但我正在寻找一种方法来记住C 为什么%d代表整数?,c,formatting,printf,C,Formatting,Printf,我知道这听起来效率不高,但我正在寻找一种方法来记住printf调用的所有格式代码%s,%p,%f都是显而易见的,但我不明白%d从何而来。%i是否已被其他对象占用?它代表“”(以10为基数),而不是“整数”。您可以使用%x打印(以16为基数),使用%o打印(以8为基数)。整数可以是这些基数中的任何一个 在printf()中,如果您更喜欢表示“整数”而不是“小数”,则可以使用%i作为%d的同义词,但%d通常更为具体 在输入时,使用scanf(),您可以同时使用%i和%d%i表示将其解析为任意基数的整
printf
调用的所有格式代码<代码>%s,%p
,%f
都是显而易见的,但我不明白%d
从何而来。%i
是否已被其他对象占用?它代表“”(以10为基数),而不是“整数”。您可以使用%x
打印(以16为基数),使用%o
打印(以8为基数)。整数可以是这些基数中的任何一个
在printf()
中,如果您更喜欢表示“整数”而不是“小数”,则可以使用%i
作为%d
的同义词,但%d
通常更为具体
在输入时,使用scanf()
,您可以同时使用%i
和%d
<代码>%i表示将其解析为任意基数的整数(八进制、十六进制或十进制,由0
或0x
前缀表示),而%d
表示将其解析为十进制整数
下面是所有这些措施的一个例子:
#include <stdio.h>
int main() {
int out = 10;
int in[4];
printf("%d %i %x %o\n", out, out, out, out);
sscanf("010 010 010 010", "%d %i %x %o", &in[0], &in[1], &in[2], &in[3]);
printf("%d %d %d %d\n", in[0], in[1], in[2], in[3]);
sscanf("0x10 10 010", "%i %i %i", &in[0], &in[1], &in[2]);
printf("%d %d %d\n", in[0], in[1], in[2]);
return 0;
}
#包括
int main(){
int out=10;
[4]中的int;
printf(“%d%i%x%o\n”,out,out,out);
sscanf(“010”、%d%i%x%o”、[0]、[1]、[2]、[3]中的&;
printf(“%d%d%d%d\n”,在[0]、[1]、[2]、[3]中);
sscanf(“0x10 10 010”、“%i%i%i”、[0]、[1]、[2]中的和);
printf(“%d%d%d\n”,在[0],在[1],在[2]);
返回0;
}
因此,如果希望输入基数依赖于前缀,则应仅使用%i
;如果输入基数应固定,则应使用%d
、%x
或%o
。特别是,前导的0
将您置于八进制模式这一事实可能会让您赶上。似乎说,正如我所猜测的,它是十进制的
d,i
int作为有符号十进制数。“%d'和“%i”是
输出,但与scanf()一起用于输入(使用%i)时不同
如果前面有0x,则将数字解释为十六进制,并且
如果前面有0,则为八进制。)
我最好的猜测是小数点是,然而,这是一个具有讽刺意味的+1有趣的问题。虽然这不是一个真正的编程问题,我倾向于关闭这些:)“d”代表“Does代表整数”。很简单。那么真正的问题是“为什么java调用整数‘int’”,当一个长的、一个短的和一个字节。。。也是INT