C语言中printf打印形式(%02X, %2X, %-2X, %.nf, %m.nf, %e, %m.ne, %2d, %-2d, %02d, %.2d)
<div class="operating">
<a class="href-article-edit slide-toggle">版权</a>
</div>
</div>
</div>
</div>
<div id="blogColumnPayAdvert">
<div class="column-group">
<div class="column-group-item column-group0 column-group-item-one">
<div class="item-l">
<a class="item-target" href="https://blog.csdn.net/dodamce/category_10770926.html" target="_blank" title="C语言" data-report-click="{"spm":"1001.2101.3001.6332"}">
<img class="item-target" src="https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_224,w_224" alt="">
<span class="title item-target">
<span>
<span class="tit">C语言</span>
<span class="dec">专栏收录该内容</span>
</span>
</span>
</a>
</div>
<div class="item-m">
<span>14 篇文章</span>
<span>7 订阅</span>
</div>
<div class="item-r">
<a class="item-target article-column-bt articleColumnFreeBt" data-id="10770926">订阅专栏</a>
</div>
</div>
</div>
</div>
<article class="baidu_pl">
<div id="article_content" class="article_content clearfix">
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
<link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-6e43165c0a.css">
<div id="content_views" class="markdown_views prism-atom-one-dark">
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<path stroke-linecap="round" d="M5,0 0,2.5 5,5z" id="raphael-marker-block" style="-webkit-tap-highlight-color: rgba(0, 0, 0, 0);"></path>
</svg>
<p></p>
%2d,%-2d,%.2d,%02d
int main()
{
int a = 1;
printf("%d\n",a);
printf("%2d\n",a);
printf("%.2d\n", a);
printf("%-2d\n",a);
printf("%02d\n",a);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如图所示,2表示输出宽度,当大于输出宽度时,数据按原数据输出。当小于输出宽度2时,默认前补空格。如果有-号表示后补空格,.2d与02d相同,都表示不足宽度2时前补0.
%md类似,不在赘述
%2x, %02x, %-2x, %.2x
X 表示以十六进制形式输出
02 表示不足两位,前面补0输出;如果超过两位,则实际输出
#include<stdio.h>
int main()
{
printf("%02X\n", 0x325);
printf("%02X", 0x5);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
如果写为 %2x,数据不足两位时,前面补空格输出,不额外补0输出; 如果超过两位,则实际输出
如果写成%-2x,数据不足两位时,后面补空格输出,不额外补0输出; 如果超过两位,则实际输出
如果写成%.2x效果和%02x相同
#include<stdio.h>
int main()
{
printf("%2X\n", 0x325);
printf("%2X\n", 0x5);
printf("%-2X", 0x5);
printf("1");//验证后面有空格
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
%mx类似,不在赘述
%f, %.nf, %m.nf,
#include<stdio.h> int main() { double num;
num <span class="token operator">=</span> <span class="token number">3.1415</span><span class="token punctuation">;</span> <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%f\n"</span><span class="token punctuation">,</span>num<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%5.2lf\n"</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%.2lf\n"</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token function">printf</span><span class="token punctuation">(</span><span class="token string">"%.6lf\n"</span><span class="token punctuation">,</span> num<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token keyword">return</span> <span class="token number">0</span><span class="token punctuation">;</span>
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
1.%f不限制宽度和小数点后面的位数
2.%mf表示限制数据输出宽度为m,这个数据宽度还包括小数点
不足宽度的前面补空格。超过宽度的数据正常输出。
eg:%5.2lf——3.14占4个宽度<5所以前面补空格。
3.%.nf——表示小数点后面保留两位小数。
%e, %.ne,%m.ne,
%e:以指数形式打印数字
在不指定输出宽度的情况下默认数字部分小数点6位,指数占4位。
注意:小数部分不算小数点,指数e与+/-都算指数位数。
%m.ne:m表示输出列数,n表示有几位小数
当输出列数>m时按原数据输出
当<m时前补空格输出
%-m.ne表示后面补空格。
%.ne表示不限制输出列数,小数部分保留n位。
int main()
{
printf("%e\n",123.456);
printf("%.2e\n", 123.456);
printf("%13e\n",123.456);
printf("%-13e", 123.456);
printf("1\n");//验证空格
printf("%3e\n", 123.456);
printf("%13.2e\n", 123.456);
return 0;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
最后,此文章根据大量实验得来,有任何问题,欢迎指出