C中%i,%d和%D之间有什么区别? (printf的)

时间:2017-07-06 14:52:52

标签: c printf

我想知道printf函数中%D,%d和%i之间的区别是什么,因为它们都显示整数,那么为什么有3种格式来显示整数?这三种格式之间一定有区别吗?

编辑:我也要求%D,而不仅仅是%i和%d。

2 个答案:

答案 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标准。