C 语言] printf 函数的使用
printf函数是stdio.h中的一个函数,也是很多c的初学者要学习使用的函数,其作用是向输出设备(如屏幕等)输出数据,简而言之,就是打印。
1.字符串的输出
#include<stdio.h>
#include<stdlib.h>
int main()
{
printf("hello world");
system("pause");
return 0;
}
2.格式字符
格式控制符:% 格式说明引导符。
-指定左对齐输出。
0指定空位填零。
m.n 指定输出域宽度及精度。
l.h 输出长度的修正。
(1)格式字符:指定输出项的数据类型和输出格式。
d有符号十进制整数。
o无符号八进制数。
x无符号十六进制数。(小写的x格式中用小写字母a,b,c,d,e,f来表示10到15之间的数,大写的X则用大写的ABCDEF来表示10到15之间的数)
u不带符号的十进制整数。
基本整型:两个字节,十六个bit(位)
11 11 11 11 11 11 11 11 等于 65535.
11 11 11 11 11 11 11 10 等于 -2.
负数的第一位(符号位)为1。负数的补码怎么得到:原码取反加一。2的二进制数为:00 00 00 00 00 00 00 10,取反就等于11 11 11 11 11 11 11 01,然后加1,二进制数逢二进一,所以就得出-2 的二进制代码。
有符号的整型数可以用 %d 输出。
无符号的整型数可以用 %u 输出。
电脑里存的数字都是二进制数,最高位是符号位还是数据位,可以由输出格式符来控制。
二进制数转换八进制数:三个 1 对应一个 7 。
二进制数錾十六进制数:四位二进制对应一位十六进制,四个1 对应一个 f。
(2)格式字符:
c 输出一个字符。
s 输出一个字符串。
e 以指数形式输出实型数。
f 以小数形式输出实型数。
g 自动决定输出格式为e和f中较短的一种,不打印无效的零。
% 输出%。
注意:
对于单精度数,使用 %f 格式符输出时,仅前7位是有效数字,小数6位。
对于双精度数,使用 %lf 格式符输出时,前16位是有效数字,小数6位。
长度修正符
l:对整型指定长整型long
例:%ld , %lx , %lo , %lu
对实型指定双精度double
例:%lf
h:只用于整型的格式字符修正为short
例:%hd , %hx , %ho , %hu
对64位整数的输入输出,在POJ上的C++环境下(即VC++),64位整数是:__int64
输入输出格式为”%I64d”.
在G++环境下, 64位整数是long long
输入输出格式为”%lld”.
(3)域宽及精度的描述
M:域宽,即对应的输出项在输出设备上所占字符数
若:实际数据宽度>M,按实际数据宽度输出。
实际数据宽度<M,左边补空。
N:精度,说明输出的实型数的小数位数。
几点说明:
编译程序只是检查printf 函数的调用形式,不分析格式控制字符串,如果格式字符与输出项的类型不匹配,不进行类型转换。(输出的数为随机)
格式字符要用小写字母。
格式控制字符串中可以包含转义字符。
格式控制字符串中的普通字符则原样输出。
输出项的参数除了常数、变量外还可以是表达式、函数调用。
%g,%f和%e这三个格式用于打印浮点值。
%g格式用于打印那些不需要按列对齐的浮点数特别有用。
其作用有二:
1.去掉该数尾多余的零(没有达到六位的数)
2.保留六位有效数字(多余六位的)
(1)%e格式用于打印浮点数时,一律显示地使用指数形式:例如:输出圆周率时是:3.141593e+00
两者的区别:
%g格式打印出的数是总共6位有效数字
%e格式打印出小数点后的6位有效数字
%f禁止使用指数形式来表示浮点数。因此圆周率输出为:3.141593
(但注意它的精度要求:也是小数点后6位有效数字)
%%格式用于打印一个%字符。
%E和%G只是在输出时用大写字母(E)代替了小写字母(e)
(2)输出正负号的技巧,例如:
printf("%+d %+d %+d\n",-5,0,5);
只要在中间加个“+”号就行。作用是输出符号位(即,数的正负号)
如果不希望正数的前面出现‘+'号,可用下面的方法
只要在中间加个“ ”号(即:空格)就行。例如:
作用:如果一个数是非负数,就在它的前面插入一个空格。
int i;
for(i=-3;i<=3;i++)
printf("% d\n",i); //注意%和d之间有一个空格。
上一篇: python 保留三个有效数字
下一篇: 如何在 Java 中保留有效数字
推荐阅读
-
使用 .NET7 和 C#11 构建最快的序列化器--以 MemoryPack 为例
-
贪婪算法在 Python、JavaScript、Java、C++ 和 C# 中的多种实现及其在硬币变化、分数骑士、活动选择和使用哈夫曼编码的最小生成树问题中的应用实例
-
分段函数的线性化:建模和使用 cplexes
-
php 字符串比较函数 strcmp 和 strcasecmp 的使用摘要
-
使用 R 语言进行简单的主成分分析 (PCA)
-
使用 R 语言计算 vcf 格式文件核苷酸多样性的简单小例子 - 接下来是 R 语言中的操作
-
微信 "扫一扫 "物联网,全面揭秘 "扫一扫 "背后的扫盲技术!-1.1 扫一扫感知物体是做什么的? 1.1 微信扫一扫是做什么的? 扫一扫识物是指以图片或视频(商品图片:鞋/包/美妆/服饰/家电/玩具/图书/食品/珠宝/家具/其他商品)为输入媒介,挖掘微信内容生态中的有价值信息(电商+百科+资讯,如图1所示),并展示给用户。这里的电商基本涵盖了微信小程序覆盖上亿SKU的全量优质电商,可以支持用户货比N家并直接下单购买,百科和资讯则聚合了微信内的头部自媒体如搜狗、搜搜、百度等,向用户展示和分享拍摄商品相关的内容资讯。 图 1 扫一扫识别功能示意图 欢迎大家更新iOS新版微信→扫一扫→识货,亲自体验,也欢迎大家通过识货界面的反馈按钮向我们提交反馈意见。 扫一扫识物实景图展示 1.2 扫一扫识物有哪些使用场景? 扫一扫识物的目的是为用户访问微信内部生态内容开辟一个新窗口,以用户扫图片为输入形式,为用户提供微信生态内容中的百科、资讯、电商等作为展示页面。除了用户熟悉的扫一扫操作外,我们还将进一步拓展长按操作,让用户更方便地进行扫一扫操作。"扫一扫知事 "的落地场景主要涵盖三大部分: a. 科普知识: a.科普知识。用户通过扫一扫,可以在微信生态圈中获取该对象的百科、资讯等常识或趣闻,帮助用户更好地了解该对象; b.购物场景。同样的搜索功能支持用户看到喜欢的商品立即检索到微信小程序电商中的同款商品,支持用户即扫即购; c.广告场景。扫一扫识别物体可以辅助公众号文章、视频更好地理解其中蕴含的图片信息,从而更好地投放匹配广告,提高点击率。 1.3 Sweep Sense 为 Sweep 家族带来了哪些新技术? 对于扫一扫来说,大家耳熟能详的应该就是扫一扫二维码、扫一扫小程序码、扫一扫条形码、扫一扫翻译了。无论是各种形式的编码还是文字字符,都可以看作是图片的一种特定编码形式,而物的识别则是对自然场景图片的识别,这对于扫一扫家族来说是一个质的飞跃,我们希望从物的识别入手,进一步拓展扫一扫对自然场景图片的理解能力,比如扫酒、扫车、扫植物、扫人脸等服务,如下图3所示。 图 3 Sweep 家族
-
二十一点游戏的 C 语言实现 - 算法设计
-
用 C 语言实现二十一点游戏的源代码
-
NX 二次开发--C++ 使用 IDA Pro 反编译 dll,查看内部使用的 API 函数(第 1 部分)