这里是一篇详细介绍 C 语言中各个整型常量格式说明符的文章,包含示例代码,并用表情让内容更生动!
在 C 语言中,我们常常需要格式化输出整数,而 printf()
和 scanf()
提供了多种格式说明符。本文将详细介绍 C 语言中所有常见的整型格式说明符,并通过示例代码帮助你更好地理解!✨
printf()
和 scanf()
中的整型格式说明符说明符 | 数据类型 | 描述 | 示例输出 |
---|---|---|---|
%d |
int |
以有符号十进制输出 | 123 |
%i |
int |
同 %d ,但可识别八进制和十六进制 |
012 (八进制) -> 10 |
%u |
unsigned int |
以无符号十进制输出 | 4294967295 |
%o |
unsigned int |
以无符号八进制输出 | 0754 |
%x |
unsigned int |
以**无符号十六进制(小写)**输出 | 0x7fa3 |
%X |
unsigned int |
以**无符号十六进制(大写)**输出 | 0X7FA3 |
%hd |
short int |
以有符号短整型输出 | 32767 |
%hu |
unsigned short int |
以无符号短整型输出 | 65535 |
%ld |
long int |
以有符号长整型输出 | 2147483647 |
%lu |
unsigned long int |
以无符号长整型输出 | 4294967295 |
%lld |
long long int |
以有符号长长整型输出 | 9223372036854775807 |
%llu |
unsigned long long int |
以无符号长长整型输出 | 18446744073709551615 |
注意:%i
和 %d
的主要区别在于 %i
可以识别八进制(前缀 0
)和十六进制(前缀 0x
),而 %d
只能识别十进制。
printf()
输出不同格式的整数#include
int main() {
int num = 255;
short s_num = 32767;
long l_num = 2147483647;
long long ll_num = 9223372036854775807;
unsigned int u_num = 4294967295;
printf("整数 %%d: %d\n", num);
printf("整数 %%i: %i\n", num);
printf("八进制 %%o: %o\n", num);
printf("十六进制(小写) %%x: %x\n", num);
printf("十六进制(大写) %%X: %X\n", num);
printf("短整型 %%hd: %hd\n", s_num);
printf("长整型 %%ld: %ld\n", l_num);
printf("长长整型 %%lld: %lld\n", ll_num);
printf("无符号整型 %%u: %u\n", u_num);
return 0;
}
整数 %d: 255
整数 %i: 255
八进制 %o: 377
十六进制(小写) %x: ff
十六进制(大写) %X: FF
短整型 %hd: 32767
长整型 %ld: 2147483647
长长整型 %lld: 9223372036854775807
无符号整型 %u: 4294967295
scanf()
读取不同格式的整数#include
int main() {
int d, i, o, x;
printf("请输入十进制数: ");
scanf("%d", &d);
printf("请输入八进制数 (以 0 开头): ");
scanf("%i", &o); // `%i` 可以识别 `012` 作为 10(八进制)
printf("请输入十六进制数 (以 0x 开头): ");
scanf("%i", &x); // `%i` 识别 `0xA` 为 10(十六进制)
printf("\n你输入的十进制数: %d\n", d);
printf("你输入的八进制转换为十进制: %d\n", o);
printf("你输入的十六进制转换为十进制: %d\n", x);
return 0;
}
请输入十进制数: 42
请输入八进制数 (以 0 开头): 052
请输入十六进制数 (以 0x 开头): 0xA
你输入的十进制数: 42
你输入的八进制转换为十进制: 42
你输入的十六进制转换为十进制: 10
sizeof()
获取不同整型的大小C 语言中,各种整型的大小取决于系统和编译器,以下代码展示了不同整型的大小(单位:字节)。
#include
int main() {
printf("sizeof(short) = %lu bytes\n", sizeof(short));
printf("sizeof(int) = %lu bytes\n", sizeof(int));
printf("sizeof(long) = %lu bytes\n", sizeof(long));
printf("sizeof(long long) = %lu bytes\n", sizeof(long long));
printf("sizeof(unsigned int) = %lu bytes\n", sizeof(unsigned int));
return 0;
}
一般情况下:
short
2字节int
4字节long
4 或 8 字节long long
8字节unsigned int
4字节#
在 printf()
中增强可读性如果你想要让八进制和十六进制的输出更直观,可以使用 #
修饰符:
#include
int main() {
int num = 255;
printf("标准八进制输出: %o\n", num);
printf("带前缀八进制输出: %#o\n", num); // 加上前缀 "0"
printf("标准十六进制输出 (小写): %x\n", num);
printf("带前缀十六进制输出 (小写): %#x\n", num); // 加上前缀 "0x"
printf("标准十六进制输出 (大写): %X\n", num);
printf("带前缀十六进制输出 (大写): %#X\n", num); // 加上前缀 "0X"
return 0;
}
标准八进制输出: 377
带前缀八进制输出: 0377
标准十六进制输出 (小写): ff
带前缀十六进制输出 (小写): 0xff
标准十六进制输出 (大写): FF
带前缀十六进制输出 (大写): 0XFF
现在你已经掌握了 C 语言中所有常见的整型格式说明符,快去练习吧! 记住:
%d
和 %i
适用于 int
,但 %i
还能解析八进制和十六进制输入%o
、%x
、%X
用于不同进制h
、l
、ll
修饰希望这篇文章对你有所帮助!