我想知道printf函数中%D,%d和%i之间的区别是什么,因为它们都显示整数,那么为什么有3种格式来显示整数?这三种格式之间一定有区别吗?
编辑:我也要求%D,而不仅仅是%i和%d。
答案 0 :(得分:7)
首先,%D
不是标准。
对于%d
和%i
,输出没有区别(例如:printf
),正如评论中的某些用户所指出的那样,Oliver Charlesworth回答。
但是,对于输入数据(例如:scanf
),您可以使用%i
来扫描十六进制值(如果前面带有0x)或八进制(如果前面带有0)。其默认行为将扫描十进制值。
例如:如果您使用%i
之类的0x28
输入一些数据,那么它将与dec中的40
相同。
编辑:一些代码作为示例:
#include <stdio.h>
int main(){
int dec, hex;
scanf("%i",&hex); //For example, hex = 0x28
scanf("%d",&dec); //For example, dec = 28
printf("Hex: %d\nDec: %d\n",hex,dec); // outputs: Hex = 40, Dec = 28
}
答案 1 :(得分:4)
%d
和%i
之间没有区别,据我所知,%D
不是一件事(或者至少,它可能是特定于编译器的扩展)。
请参阅例如http://en.cppreference.com/w/c/io/fprintf或第7.19.6.1节。 C99标准。