1.调用格式为  printf("<格式化字符串>", <参量表>); 
  其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部分是格式化规定字符, 以"%"开始, 后跟一个或几个规定字符, 用来确定输出内容格式。参量表是需要输出的一系列参数, 其个数必须与格式化字符串所说明的输出参数个数一样多, 各参数之间用","分开, 且顺序一一对应, 否则将会出现意想不到的错误。

2.格式化字符

%d 十进制有符号整数 
%u 十进制无符号整数 
%f 浮点数 
%s 字符串 
%c 单个字符 
%p 指针的值 
%e 指数形式的浮点数 
%x, %X 无符号以十六进制表示的整数 
%0 无符号以八进制表示的整数 
%g 自动选择合适的表示法 
说明: 
(1). 可以在"%"和字母之间插进数字表示最大场宽。 例如: %3d 表示输出3位整型数, 不够3位右对齐。%9.2f 表示输出场宽为9的浮点数, 其中小数位为2, 整数位为6, 小数点占一位, 不够9位右对齐。%8s 表示输出8个字符的字符串, 不够8个字符右对齐。 如果字符串的长度、或整型数位数超过说明的场宽, 将按其实际长度输出。 但对浮点数, 若整数部分位数超过了说明的整数位宽度, 将按实际整数位输出; 若小数部分位数超过了说明的小数位宽度, 则按说明的宽度以四舍五入输出。另外, 若想在输出值前加一些0, 就应在场宽项前加个0。 例如: %04d 表示在输出一个小于4位的数值时, 将在前面补0使其总宽度为4位。如果用浮点数表示字符或整型量的输出格式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。例如: %6.9s 表示显示一个长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。 
(2). 可以在"%"和字母之间加小写字母l, 表示输出的是长型数。例如: %ld 表示输出long整数, %lf 表示输出double浮点数。
(3). 可以控制输出左对齐或右对齐, 即在"%"和字母之间加入一个"-" 号可说明输出为左对齐, 否则为右对齐。例如: %-7d 表示输出7位整数左对齐,%-10s 表示输出10个字符左对齐。

3. 一些特殊规定字符 
\n换行
\f清屏并换页 
\r回车 
\t Tab符 
\xhh表示一个ASCII码用16进表示,
其中hh是1到2个16进制数

int a=1234;    printf("a=%d\n",a);    //a=1234    printf("a=%2d\n",a);   //a=1234    超过2位,按实际输出    printf("a=%6d\n",a);   //a=  1234  不足6位,右对齐    printf("a=%06d\n",a);  //a=001234  不足6位,前面补0    printf("a=%-6d\n",a);  //a=1234    '-'左对齐

int* i=&a;    printf("i=%p\n",i);    //i=0012FF44  输出指针的值,即地址

float m=8888.8888;     //float 单精度型浮点数 有效位数是6位或7位,根据不同的浮点数会有不同float m1=8888.8888f;    //在后面加上f或F,编译警告:truncation from'const double'to 'float'//编译器默认浮点数为doublefloat m2=8888.888f;  double n=8888.8888;double n1=8888888888.88888888;  //double 双精度型浮点数 有效位数是15位    printf("m=%f\n m1=%f\n m2=%f\n n=%lf\n n1=%f\n",m,m1,m2,n,n1); // m=8888.888672//  m1=8888.888672     //  m2=8888.887695// n=8888.888800// n1=8888888888.888889//%f的默认输出小数位数就是6位不管有没有l/*printf的%f说明符的确既可以输出float型又可以输出 double型。 根据"默认参数提升"规则(在printf这样的函数的    可变参数列表中 ,不论作用域内有没有原型,都适用这一规则)float型会被提升为double型。因此printf()只会看到    双精度数。严格地讲,%lf在printf下是未定义的,但是很多系统可能会接受它。要确保可移植性,就要坚持使用%f。*/

    printf("m4=%4.2f\n",m);   //宽度总共4位,小数两位,小数点一位,整数一位,这里整数超过宽度规定,按实际整数位输出    printf("m5=%9.6f\n",m);   //浮点数小数部分不足6位,右对齐    printf("m6=%9.2f\n",m);   //整数部分不足6位,右对齐;小数部分超过2位,四舍五入

char c[20]="Hello,world!";    printf("c=%s\n",c);        printf("c=%6.9s\n",c);  //c=Hello,wor  6.9s表示输出一个长度长度不小于6且不大于9的字符串。若大于9, 则第9个字符以后的内容将被删除。

  转载自:http://www.cnblogs.com/shiney/archive/2011/08/19/2145921.html

例子:

#include<cstdio>
int main()
{
    //for int
    int i=30122121;
    long i2=309095024l;
    short i3=30;
    unsigned i4=2123453;
    printf("%d,%o,%x,%X,%ld,%hd,%u ",i,i,i,i,i2,i3,i4);//如果是:%l,%h,则输不出结果 
    printf("%d,%ld ",i,i2);//试验不出%ld和%d之间的差别,因为long是4bytes
    printf("%hd,%hd ",i,i3);//试验了%hd和%d之间的差别,因为short是2bytes

    //for string and char
    char ch1="d";
    unsigned char ch2=160;
    char *str="Hello everyone!";
    printf("%c,%u,%s ",ch1,ch2,str);//unsigned char超过128的没有字符对应
   
    //for float and double,unsigned and signed can not be used with double and float
    float fl=2.566545445F;//or 2.566545445f
    double dl=265.5651445;
    long double dl2=2.5654441454;
    //%g没有e格式,默认6位包括小数点前面的数,
    //%f没有e格式,默认6位仅只小数点后面包含6位
    //%e采用e格式,默认6位为转化后的小数点后面的6位
    printf("%f,%e,%g,%.7f ",fl,dl,dl,dl);
    printf("%f,%E,%G,%f ",fl,dl,dl,dl);//%F is wrong
    printf("%.8f,%.10e ",fl,dl);
    printf("%.8e,%.10f ",fl,dl);
    //for point 
    int *iP=&i;
    char *iP1=new char;
    void *iP2;//dangerous!
    printf("%p,%p,%p ",iP,iP1,iP2);
    
    //其他知识:负号,表示左对齐(默认是右对齐);%6.3,6表示宽度,3表示精度
    char *s="Hello world!";
    printf(":%s: :%10s: :%.10s: :%-10s: :%.15s: :%-15s: :%15.10s: :%-15.10s: ",
        s,s,s,s,s,s,s,s);
    double ddd=563.908556444;
    printf(":%g: :%10g: :%.10g: :%-10g: :%.15g: :%-15g: :%15.10g: :%-15.10g: ",
        ddd,ddd,ddd,ddd,ddd,ddd,ddd,ddd);

    //还有一个特殊的格式%*.* ,这两个星号的值分别由第二个和第三个参数的值指定
    printf("%.*s ", 8, "abcdefgggggg");
    printf("%*.*f   ", 3,3, 1.25456f);
 
    return 0;
}

转载于:https://www.cnblogs.com/cc-Cheng/p/3312266.html

C语言printf语法相关推荐

  1. python与c语言在语法上的区别-Python与C语言基础对比(Python快速入门)

    代码较长,建议使用电脑阅读本文. 10分钟入门Python 本文中使用的是Python3 如果你曾经学过C语言,阅读此文,相信你能迅速发现这两种语言的异同,达到快速入门的目的.下面将开始介绍它们的异同 ...

  2. c语言printf打印字符串,puts()vs printf()用于以C语言打印字符串

    函数puts()和printf()在stdio.h头文件中声明,用于将文本发送到输出流.两者都有不同的用法和语法. puts() 该函数puts()用于在输出流上打印带有附加换行符'\ n'的字符串. ...

  3. Go语言基本语法 (下)

    原作者博客链接:[https://www.liwenzhou.com/][https://www.liwenzhou.com/] Golang 中文文档地址:https://studygolang.c ...

  4. C语言入门教程|| C语言 程序结构|| C语言 基本语法

    在我们学习 C 语言的基本构建块之前,让我们先来看看一个最小的 C 程序结构,在接下来的章节中可以以此作为参考. C 程序主要包括以下部分: 预处理器指令 函数 变量 语句 & 表达式 注释 ...

  5. Go语言 基础语法学习 (未完待更......

    文章目录 一 Go语言结构 1 Go Hello world实例 2 执行Go程序 二 Go语言基础语法 1 Go标记 2 行分隔符 3 注释 4 标识符 5 一些关键字 6 Go语言的空格 7 格式 ...

  6. linux u8 u16 u32 u64,C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/doub

    C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/doub C 语言printf打印各种数据类型的方法(u8/s8/u16/s16.../u64/double/fl ...

  7. C语言基础语法【1】

    目录 1.在linux系统编写C语言,基本命令:变量.常量.标识符 2.数据类型.取值范围.字符串 3.短路原则.类型转换 4.switch语句.for.while循环.死循环 1.在linux系统编 ...

  8. OC语言——基本语法和思想

    今天学习了OC语言基础语法 1.oc语言完全兼容C语言,后缀为.m类型.被广泛应运与开发苹果mac os x平台和ios开发平台 2.oc语言关键字基本上以@开头,oc字符串也是以@开头. 3.基本类 ...

  9. GO 语言基础语法一 (快速入门 Go 语言)

    Go语言基础语法 一. golang 标识符,关键字,命名规则 二. golang 变量 三. golang 常量 四. golang 数据类型 五. golang 布尔类型 六. golang 数字 ...

  10. 【Go编程语言】 Go语言基础语法

    Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...

最新文章

  1. 2 用python进行OpenCV实战之图像基本知识
  2. linux日志idProduct,linux – 机器ID是uuid吗?
  3. 经典算法题每日演练——第六题 协同推荐SlopeOne 算法
  4. 各种基本的排序算法在Object-C实现
  5. linux下批量修改文件名的方法
  6. 解题报告 『[NOI2014]起床困难综合症(位运算)』
  7. docker搭建webug4.0并——示范.支付漏洞,邮箱轰炸
  8. excel判断两列中同一行的数据是否一致
  9. DBGridEh使用技巧
  10. Doc2EDAG: An End-to-End Document-level Framework for Chinese Financial Event Extraction
  11. WPF中的Application类。
  12. 解决办法:undefined reference to symbol '_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
  13. 2022中山大学计算机技术专硕考研初试、复试经验帖
  14. Android Gallery 3D 特效精华
  15. nfc(近距离无线通讯技术)
  16. 【图像分割】基于matlab粒子群算法优化模拟退火算法图像分割【含Matlab源码 2020期】
  17. 适合小孩接触编程起步的几款软件,从游戏中学习编程
  18. keil出现同一个宏定义赋值在多个文件中结果不一致问题
  19. Structure-Revealing联合去噪增强模型论文解读
  20. 信息学奥赛一本通 1273:【例9.17】货币系统

热门文章

  1. IOS设计模式学习(7)单例
  2. LCT动态树【史上最精简易懂的LCT讲解】
  3. centos7.2 部署k8s集群
  4. @Autowired的使用--Spring规范解释,推荐对构造函数进行注释
  5. react-踩坑记录——swiper报错!
  6. 5028: 小Z的加油店(线段树)
  7. Android开机键失灵启动手机的解决的方法
  8. 2016中国大学生程序设计竞赛(长春)
  9. 详解Android核心模块及相关技术
  10. Windows环境zip版PostgreSQL数据库安装