📅  最后修改于: 2023-12-03 14:40:27.394000             🧑  作者: Mango
在C语言中,%d和%i都是格式说明符,用于输出整型数据。但是它们有以下几点不同:
当输入带正负号的数时,%d和%i的处理方式不同。比如输入值为-10时,%d和%i的输出结果分别为:
int a = -10;
printf("%d", a); // 输出结果:-10
printf("%i", a); // 输出结果:-10
%i可以自动识别输入的进制数,并将其转换成十进制数输出,而%d只能将十进制数输出。比如输入值为0x10时,%d和%i的输出结果分别为:
int a = 0x10;
printf("%d", a); // 输出结果:16
printf("%i", a); // 输出结果:16
当输入不同类型的整型数时,%d和%i的处理方式也有所不同。比如输入值为unsigned int类型的最大值时,%d和%i的输出结果分别为:
unsigned int a = 4294967295;
printf("%d", a); // 输出结果:-1
printf("%i", a); // 输出结果:-1
%c是用于输出单个字符的格式说明符,%d和%i都无法输出宽字符型数据。需要使用%lc或%ls输出宽字符型数据。比如输出一个宽字符型数据L'中'时,代码应该为:
wchar_t a = L'中';
wprintf("%lc", a); // 输出结果:中
综上所述,%d和%i虽然都是用于输出整型数据的格式说明符,但是它们在处理有符号数、不同进制数和不同类型整型数的时候表现不同。程序员在使用时需要根据实际情况进行选择。