printf()用法详解

    正在C++/C言语中,有一类库函数称为准则输进输出函数,可以用来从键盘读取键进的字符,以及将字符正在屏幕上输出。这类函数的声明都包括正在头文件 stdio.h 中。下面就先来谈谈主要的准则输出函数(printf函数)的用法:

    一、printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。正在编写步骤时经常会用到此函数。printf()函数的挪用式样为
    
printf("<式样化字符串>"<参量表>)

    其中式样化字符串包括两部分内容: 一部分是正常字符这些字符将按原样输出;另一部分是式样化规定字符, "%"开端, 后跟一个或几个规定字符, 用来确定输出内容式样。
   
参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用","分开, 且顺序逐一对应, 不然将会出现意想不到的过失。 
    
式样化字符串的式样是:

    %[标志][输出最小宽度][.精度][长度]式样字符

    1、标志

      标志              意义
      -                   结果左对齐,右边填空格
      +                  
输出标记(正号或负号)
     
空格                输出值为正时输出空格,为负时输出负号

      #                  
正在八进制和十六进制线显现前导航O,Ox

    假如你还不太理解,没关系!请瞧下面的例子就会了如指掌了:

1
include<stdio.h>
int main()

{
    int a=100;
    float b=123.255;
    printf("a=%d/n",a);    // /n
为本义字符,控制换行
    printf("a=%10d/n",a);
    printf("a=%-10d/n",a);
    printf("a=%+d/n",a);
    printf("a=% d/n",a);
    printf("a=%#o/n",a);
    printf("a=%#x/n",a);
    printf("b=%lf/n",b); 
//能否对此行的输出存有疑问,这都是float精度惹的祸,卖前就晓得如何对其变动了

    return 0;
}
运转结果
a=100
a=       
100
a=
100
a=+
100
a=
100
a=
0144
a=0x64
b=123.254997 

    2.输出最小宽度:(1)用十进制整数来表示输出的最少位数。(至多要输出这么多位!)
                    (2)
若实践位数多于界说的宽度:则按实践位数输出。
                    (3)
若实践位数少于界说的宽度:a.则右对齐,左边留空。
                                                 b.
有负号,左对齐,右边留空
                                                 c.
表示宽度的数字以0开端,则右对齐,左边留空。

    我们再来瞧一个例子:

2

include<stdio.h>
int main()
{
    int a=3456;
    printf("a=%3d/n",a);     //
若实践位数多于界说的宽度:则按实践位数输出

    printf("a=%10d/n",a);    //
若实践位数少于界说的宽度:则右对齐,左边留空
    printf("a=%-10d/n",a);   //
若实践位数少于界说的宽度:有负号,左对齐,右边留空
    printf("a=%010d/n",a);   //
若实践位数少于界说的宽度:表示宽度的数字以0开端,则右对齐,左边

                            //留空
    printf("a=%-010d/n",a); //
左对齐,0无意义。

    return 0;
}
运转结果:
a=3456
a=      
3456
a=
3456
a=
0000003456
a=3456

    3.精度:精度式样符以“.”开头,后跟十进制整数。意义是:假如输出数字,则表示小数的位数;若实践位数大于所界说的精度数,则四舍五进。若不敷则补0;假如输出的是字符,则表示输出字符的个数;若实践位数大于所界说的精度数,则截走超出的部分。

3
include<stdio.h>
int main()
{
      printf("%.3f/n",12.3456);
      printf("%.9f/n",12.3456);
      printf("%.3s/n","abcdefg");
      printf("%.9s/n","abcdefg");

      return 0;
}
运转结果:
12.346           //
四舍五进到小数点后三位
12.345600000     //
不敷补0
abc
abcdefg

    所以对例1中的printf("b=%lf",b)只需该为printf("b=%.2lf",b)就可以对结果进行2位小数的保存了!

    4.长度:长度式样符为h,l两种,h表示按短整型量输出,l表示按长整型量输出。

    5.式样字符:

式样   意义
————————————————————————————
d
: - 以十进制方式输出带标记整数(正数不输出标记);
u
: - 以十进制方式输出无标记整数;
f
: - 以小数方式输出单、双精度实数;
e
: - 以质数方式输出单、双精度实数;
g
: - 以%f%e中较短的输出宽度输出单、双精度实数;
c
: - 输出单个字符;
s
: - 输出字符串。
————————————————————————————

注:l正在d,o,x,u,前,指的输出精度为long型;正在e,f,g前,指定输出精度为double

 

    最后还是来谈些本义字符吧:

 

    本义字符是C言语中表示字符的一种非凡方式。一般使用本义字符表示ASCII字符集中不可打印的控制字符和特定功能的字符,如用于表示字符常量的单撇号( '),用于表示字符串常量的双撇号( ")和反斜杠( /)等。本义字符用反斜杠/后面跟一个字符或一个八进制或十六进制数表示。

本义字符    意义         ASCII(十进制)
/a         
响铃
(BEL)    007
/b         
退格
(BS)     008
/f         
换页
(FF)     012
/n         
换行
(LF)     010
/r         
回车
(CR)     013
/t         
程度制表
(HT) 009
/v         
笔挺制表
(VT) 011
//         
反斜杠
       092
/?         
问号字符
     063
/'         
单引号字符
   039
/"         
双引号字符
   034
/0         
空字符
(NULL) 000
/ddd       
恣意字符     三位八进制

/xhh       
恣意字符     二位十六进制

    字符常量中使用单引号和反斜杠以及字符常量中使用双引号和反斜杠时,都务必使用本义字符表示,即正在这些字符前加上反斜杠。
正在C步骤中使用本义字符/ddd或者/xhh可以方便灵便地表示恣意字符。/ddd为斜杠后面跟三位八进制数,该三位八进制数的值即为对应的八进制ASCII值。/x后面跟两位十六进制数,该两位十六进制数为对应字符的十六进制ASCII值。

使用本义字符时需求注重以下标题:
(1)
本义字符中只能使用小写字母,每个本义字符只能瞧作一个字符。
(2) /v
笔挺制表和/f 换页符对屏幕没有任何影响,但会影响打印机施行呼应作。
(3)
正在C步骤中,使用不可打印字符时,一般用本义字符表示。

 

其他需求注重的一些标题:


1.假如用浮点数表示字符或整型量的输特别式, 小数点后的数字代表最大宽度, 小数点前的数字代表最小宽度。
   
例如: %6.9s 表示显现一个长度不小于6且不大于9的字符串。若大于9,   则第9个字符卖前的内容将被增除。
2.
使用printf函数时还要注重一个标题,那就是输出表列中的求值顺序。差别的编译零碎不一定相反,可以从左到右,也可从右到左。Turbo C是按从右到左进行的。请瞧下面两个例子:
4

#include<stdio.h>
int main()

{
     int i=8;
     printf("%d/n%d/n%d/n%d/n%d/n%d/n",++i,--i,i++,i--,-i++,-i--);

     return 0;
}
运转结果
8
7
7
8
-7
-8

5

#include<stdio.h>

int main()

{
     int i=8;
     printf("%d/n",++i);
     printf("%d/n",--i);
     printf("%d/n",i++);
     printf("%d/n",i--);
     printf("%d/n",-i++);
     printf("%d/n",-i--);

     return 0;
}
运转结果:
9
8
8
9
-8
-9

    这两个步骤的区别是用一个printf语句和多个printf 语句输出。但从结果可以瞧出是差别的。为什么结果会差别呢?就是由于printf函数对输出表中各量求值的顺序是自右至左进行的。正在第一例中,先对最后一项“-i--”求值,结果为-8,然后i自减1后为7。再对“-i++”项求值得-7,然后i自增1后为8。再对“i--”项求值得8,然后i再自减1后为7。再求“i++”项得7,然后i再自增1后为8。再求“--i”项,i先自减1后输出,输出值为7。最后才求输出表列中的第一项“++i”,此时i自增1后输出8。但是务必注重,求值顺序虽是自右至左,但是输出顺序还是从左至右,因此得到的结果是上述输出结果。

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值