C 语言整型常量格式说明符大全 [特殊字符]

文章目录

  • C 语言整型常量格式说明符大全
    • 1. `printf()` 和 `scanf()` 中的整型格式说明符
    • 2. 示例代码演示
      • `printf()` 输出不同格式的整数
      • 运行结果:
    • 3. `scanf()` 读取不同格式的整数
      • 运行示例:
    • 4. `sizeof()` 获取不同整型的大小
    • 5. 进阶技巧:使用 `#` 在 `printf()` 中增强可读性
      • 运行结果:
    • 结语


这里是一篇详细介绍 C 语言中各个整型常量格式说明符的文章,包含示例代码,并用表情让内容更生动!


C 语言整型常量格式说明符大全

在 C 语言中,我们常常需要格式化输出整数,而 printf()scanf() 提供了多种格式说明符。本文将详细介绍 C 语言中所有常见的整型格式说明符,并通过示例代码帮助你更好地理解!✨


1. 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 只能识别十进制。


2. 示例代码演示

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

3. 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

4. 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字节

5. 进阶技巧:使用 #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 用于不同进制
  • 不同长度的整型需要 hlll 修饰

希望这篇文章对你有所帮助!

你可能感兴趣的:(杂谈,c语言,c++,算法,开发语言,软件工程,软件构建)