在 C 语言中,%d 和 %i 都用来打印十进制整数。虽然它们在大多数情况下是可以互换使用的,但还是有一些细微的区别,特别是在解析输入时:
%d 和 %i 的区别
-
打印时的区别:
- 对于打印整数的操作,
%d和%i没有区别。它们都可以用来输出十进制整数。
c#include <stdio.h> int main() { int number = 123; printf("Using %%d: %d\n", number); printf("Using %%i: %i\n", number); return 0; }上面的代码输出将是:
Using %d: 123 Using %i: 123 - 对于打印整数的操作,
-
输入时的区别:
- 当使用
scanf函数读取整数输入时,%i可以识别不同的进制(十进制123、八进制0 12、十六进制0x 12),而%d只能读取十进制数。
c#include <stdio.h> int main() { int num; printf("Enter an integer (use 0x for hex, 0 for octal): "); scanf("%i", &num); // Using %i for input printf("You entered: %d\n", num); // Output in decimal return 0; }- 如果用户输入
0x1A,%i会将其识别为十六进制数(26 的十进制表示)。如果用户输入012,%i会将其识别为八进制数(10 的十进制表示)。而%d只会读取十进制数,因此0x1A或012输入时会被视为无效。
- 当使用
总结
- 打印时 :
%d和%i功能相同,都用于输出十进制整数。 - 输入时 :
%i更灵活,能够识别不同的进制(十进制、八进制、十六进制),而%d仅用于读取十进制整数。