news 2026/2/10 16:32:54

C 语言格式符最全速查:%d %u %c %hhu %hu %x %hx %hhx 一次看懂

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C 语言格式符最全速查:%d %u %c %hhu %hu %x %hx %hhx 一次看懂

日期:2025-12-17

标签:C语言, printf, 格式符, 调试技巧, 内存打印


前言
printf是 C 入门第一课,但%d%u%hx%hhu这些“长度修饰符”一旦组合起来,很多人就开始晕。

本文用一张表 + 一段代码帮你把常用格式符全部梳理清楚,再也不怕打印错类型导致 UB(未定义行为)。


一、一眼速查表

格式 实际类型 位宽 取值范围 常见用途 典型写法
%dsigned int 32 b −2.1 G … +2.1 G 有符号十进制int x; printf("%d\n", x);
%uunsigned int 32 b 0 … 4.3 G 无符号十进制unsigned y; printf("%u\n", y);
%cchar / int 8 b 0 … 255 输出字符char c='A'; printf("%c\n", c);
%hhuunsigned char 8 b 0 … 255 单字节无符号unsigned char b=200; printf("%hhu\n", b);
%huunsigned short 16 b 0 … 65 535 半字无符号unsigned short s=50 000; printf("%hu\n", s);
%xunsigned int 32 b 0 … 0xFFFFFFFF 32 位十六进制unsigned n; printf("%08x\n", n);
%hxunsigned short 16 b 0 … 0xFFFF 16 位十六进制unsigned short s; printf("%04hx\n", s);
%hhxunsigned char 8 b 0 … 0xFF 8 位十六进制unsigned char b; printf("%02hhx\n", b);

口诀:“h 短、hh 更短,无修饰就是 int。”


二、长度修饰符到底干嘛?
C 的整型提升规则把char/short先变成int再进栈,

长度修饰符告诉printf“从提升后的 int 里取多少位”:

修饰符 含义
hh只取最低 1 字节(unsigned char
h只取最低 2 字节(unsigned short
无 取 4 字节(unsigned int
l取 8 字节(unsigned long
ll取 8 字节(unsigned long long
z对应size_t(32/64 位自适应)


三、代码实战:内存 dump 模板

#include<stdio.h>intmain(void){unsignedcharbuf[]={0x1A,0x2B,0x3C,0xFD,0xEA};/* 1. 单字节十六进制 */for(size_ti=0;i<sizeof(buf);++i)printf("%02hhx ",buf[i]);/* 1a 2b 3c fd ea */putchar('\n');/* 2. 一次性拼串再打印 */charhex[sizeof(buf)*2+1];for(size_ti=0;i<sizeof(buf);++i)sprintf(hex+i*2,"%02hhX",buf[i]);puts(hex);/* 1A2B3CFDEA */return0;}

四、易踩的坑

  1. char%d打印

    char默认带符号,值0xFF会输出-1;想看到255请用%hhu

  2. %xunsigned char

    实参 1 字节,printf期望 4 字节 → UB;正确写法%02hhx

  3. 64 位平台打印size_t

    %zu,别写%u%lu

  4. Windows 打印__int64

    老 MSVC 用%I64d/%I64u,而不是%lld


五、小结

  • 看到hh就想到 1 字节十六进制;
  • 看到h就想到 2 字节十六进制;
  • 其余默认按 4 字节处理。

记住这张表,调试内存、写协议、刷算法题都能秒写格式串!


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/5 16:30:59

如何用ESP32芯片打造专属智能手表?5个关键步骤详解

如何用ESP32芯片打造专属智能手表&#xff1f;5个关键步骤详解 【免费下载链接】ESP32-Smart-Watch 项目地址: https://gitcode.com/gh_mirrors/es/ESP32-Smart-Watch 想拥有一款真正属于自己的智能手表吗&#xff1f;厌倦了市面上千篇一律的商业产品&#xff1f;现在&…

作者头像 李华
网站建设 2026/2/8 23:54:43

Windows资源编辑利器:rcedit深度使用指南

Windows资源编辑利器&#xff1a;rcedit深度使用指南 【免费下载链接】rcedit Command line tool to edit resources of exe 项目地址: https://gitcode.com/gh_mirrors/rc/rcedit 你是否曾经为了修改一个可执行文件的图标而烦恼&#xff1f;或者需要在自动化构建流程中…

作者头像 李华
网站建设 2026/2/8 5:44:01

EmotiVoice语音合成情感传染效应研究:听众情绪共鸣测试

EmotiVoice语音合成情感传染效应研究&#xff1a;听众情绪共鸣测试 在虚拟助手越来越频繁地进入我们生活的今天&#xff0c;一个关键问题浮出水面&#xff1a;机器的声音能否真正打动人心&#xff1f;当Siri用平淡的语调说出“我理解你的难过”&#xff0c;我们真的会感到被共情…

作者头像 李华
网站建设 2026/2/7 17:25:27

EmotiVoice语音鼓励功能激发用户行动力

EmotiVoice&#xff1a;让机器语音更有温度 在健身App里听到一句热情洋溢的“只剩最后1公里了&#xff0c;你已经快成功了&#xff01;”&#xff0c;语气中带着真诚的鼓励和节奏感&#xff1b;在心理辅导机器人对话时&#xff0c;收到一段轻柔温和的回应&#xff0c;“我知道你…

作者头像 李华