当前位置: 首页 > news >正文

C语言查漏补缺:占位符篇

占位符篇

    • 1. 整数类型
    • 2. 字符类型
    • 3. 浮点数类型
    • 4. 指针类型
    • 5. 字符串
    • 6. 修饰符

1. 整数类型

  • %d / %i:用于 int(有符号十进制整数)。
    int num = -42;
    printf("%d", num);  // 输出: -42
    
  • %u:用于 unsigned int(无符号十进制整数)。
    unsigned int num = 42;
    printf("%u", num);  // 输出: 42
    
  • %o:无符号八进制(octal)。
  • %x / %X:无符号十六进制(hex,x 小写,X 大写)。

2. 字符类型

  • %c:用于 char(单个字符)。
    char ch = 'A';
    printf("%c", ch);  // 输出: A
    
  • %hhu:用于 unsigned char(C99 引入)。
  • %hhd:用于 signed char(C99 引入)。
  • 对于 char 类型,推荐用 %d 打印 ASCII 码,或用 %c 打印字符本身。

3. 浮点数类型

  • %f:用于 float / double(默认保留 6 位小数)。

    double pi = 3.141592;
    printf("%f", pi);  // 输出: 3.141592
    
  • %e / %E:科学计数法(e 小写,E 大写)。

  • %g / %G:自动选择 %f%e(更紧凑的格式)。

  • %.nf 指定保留 n 位小数(n 是任意正整数)。

  • 默认情况下,%f 会保留 6 位小数

    printf("%f\n", num);  // 输出: 3.141593(默认 6 位)
    
  • 四舍五入规则:

    • 如果第 n+1 位 ≥ 5,则第 n 位会 进位
      printf("%.3f\n", 1.2345);  // 输出: 1.235(5 进位)
      printf("%.3f\n", 1.2344);  // 输出: 1.234(4 舍去)
      
  • 动态指定小数位数(C99 支持)**
    可以使用 * 占位符,并通过参数动态指定小数位数:

    int precision = 3;
    printf("%.*f\n", precision, 3.141592);  // 输出: 3.142
    
  • 控制总宽度 + 小数位数**

  • %m.nfm 是最小总宽度(包括小数点),n 是小数位数。

  • 如果数字位数不足,会 右对齐 并用空格填充:

    printf("%8.3f\n", 3.14);  // 输出: "   3.140"(总宽度 8,右对齐)
    printf("%-8.3f\n", 3.14); // 输出: "3.140   "(左对齐)
    
    1. 科学计数法(%e / %E
    printf("%.2e\n", 3141.592);  // 输出: 3.14e+03(保留 2 位小数)
    printf("%.4E\n", 0.000123);  // 输出: 1.2300E-04(大写 E)
    

总结:

需求格式说明符示例
默认 6 位小数%f3.141593
固定 n 位小数%.nf%.2f3.14
动态 n 位小数%.*f%.*f, 33.142
科学计数法%.ne / %.nE%.2e3.14e+00
控制总宽度 + 小数位数%m.nf%8.3f空格空格空格3.142

4. 指针类型

  • %p:用于 指针地址(通常以十六进制打印)。
    int x = 10;
    printf("%p", (void*)&x);  // 输出类似: 0x7ffd42a3bc14
    

5. 字符串

  • %s:用于 char*(C 风格字符串)。
    char str[] = "Hello";
    printf("%s", str);  // 输出: Hello
    

6. 修饰符

格式说明符可以结合 长度修饰符 使用,如:

  • %hdshort int
  • %ldlong int
  • %lldlong long int
  • %zdsize_t(用于 sizeof 返回的类型)

相关文章:

  • JavaScript中的Proxy详解
  • CUDA GPU 学习资源
  • 第三方软件测试服务公司分享:功能测试和性能测试的区别与联系
  • 小型园区组网图
  • AlDente Pro for Mac电脑 充电限制保护工具
  • 解码 __all__ - 模块接口的守护者
  • Django SaaS案例:构建一个多租户博客应用
  • SQL LIKE 语句详解
  • I²C、SPI、UART、CAN 通信协议详解
  • docker配置redis容器时配置文件docker-compose.yml示例
  • deepseek对openGauss 6.0启动日志的分析与处理
  • TCP/IP五层协议
  • 销售心理学工具包:100个可复用的话术模板与案例库-第一部分:销售心理学核心理论与工具-1.2情感共鸣构建:镜像神经元理论与情绪同步话术设计
  • 【教程】MacBook 使用 iTerm2 连接跳板机和开发机
  • 增益调度控制 —— 理论、案例与交互式 GUI 实现
  • LeetCode Hot100 刷题笔记(3)—— 链表
  • Python作业2 蒙特卡罗方法手搓图形
  • 使用 VIM 编辑器对文件进行编辑
  • 路由器学习
  • 【C++奇遇记】C++中的进阶知识(多态(一))
  • 途牛网站开发需求/网站seo视频狼雨seo教程
  • 专门做鞋子的网站吗/seo文章
  • 素材网站/360识图
  • 泰安网站建设课程报告/百度网站客服电话
  • 网站建设与维护结课论文/厦门seo顾问屈兴东
  • 前端开发 网站建设/经典seo伪原创