23. C 语言,%d 和 %i的区别
在 C 语言中,%d
和 %i
都用来打印十进制整数。虽然它们在大多数情况下是可以互换使用的,但还是有一些细微的区别,特别是在解析输入时:
%d
和 %i
的区别
-
打印时的区别:
- 对于打印整数的操作,
%d
和%i
没有区别。它们都可以用来输出十进制整数。
#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、八进制012、十六进制0x12),而%d
只能读取十进制数。
#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
仅用于读取十进制整数。