📜  C语言中%d和%i格式说明符的区别(1)

📅  最后修改于: 2023-12-03 14:40:27.394000             🧑  作者: Mango

C语言中%d和%i格式说明符的区别

在C语言中,%d和%i都是格式说明符,用于输出整型数据。但是它们有以下几点不同:

1. 对于输入带正负号的数,%d和%i的处理方式不同

当输入带正负号的数时,%d和%i的处理方式不同。比如输入值为-10时,%d和%i的输出结果分别为:

int a = -10;
printf("%d", a);  // 输出结果:-10
printf("%i", a);  // 输出结果:-10
2. 对于输入进制数时,%d和%i的处理方式不同

%i可以自动识别输入的进制数,并将其转换成十进制数输出,而%d只能将十进制数输出。比如输入值为0x10时,%d和%i的输出结果分别为:

int a = 0x10;
printf("%d", a);  // 输出结果:16
printf("%i", a);  // 输出结果:16
3. 对于输入不同类型的整型数时,%d和%i的处理方式不同

当输入不同类型的整型数时,%d和%i的处理方式也有所不同。比如输入值为unsigned int类型的最大值时,%d和%i的输出结果分别为:

unsigned int a = 4294967295;
printf("%d", a);  // 输出结果:-1
printf("%i", a);  // 输出结果:-1
4. 对于宽字符型数据,%d和%i都无法输出

%c是用于输出单个字符的格式说明符,%d和%i都无法输出宽字符型数据。需要使用%lc或%ls输出宽字符型数据。比如输出一个宽字符型数据L'中'时,代码应该为:

wchar_t a = L'中';
wprintf("%lc", a);  // 输出结果:中

综上所述,%d和%i虽然都是用于输出整型数据的格式说明符,但是它们在处理有符号数、不同进制数和不同类型整型数的时候表现不同。程序员在使用时需要根据实际情况进行选择。