有关printf函数的几点注意事项

来源:互联网 发布:淘宝每个月销量清零吗 编辑:程序博客网 时间:2024/04/24 21:03

 

printf函数 

1.在printf函数中精度修饰符‘.’后跟十进制整数。 该修饰符的意义是:如果输出为整数,表示输出的最小位数,若输出数的位数小于该值,将添加前置0,如果输出的为实数,则表示小数的位数;如果输出的是字符,则表示输出字符的个数;若实际位数大于所定义的精度数(只是针对小数部分),则截去超出的部分。

2. 使用printf函数的“%c”格式字符时,printf函数将只读取指定值的低8位(一个字节)的内容来进行输出,当数据的占用的字节数超过一个字节时,将只输出该数据最低位一个字节的内容。

例如:将数据65355int变量保存在内存中时,计算机会将该数转换为二进制数,然后将8为二进制为一个单位存入内存区域。为了表示方便,将二进制转换为十六进制,每个字节可保存两位十六进制数。65355转换为十六进制数为FF4B,将该数按int类型存储到内存中,因而其最低位为4B,转换为十进制为75 ,此时若将其按“%c”,输出则为字母K

3. 输出无符号整型数时,由于计算机保存负数时用补码的方式来存储的。例如:当使用“%u”格式字符输出变量j=-65355时,printf会将其作为无符号数来输出。变量j在内存中的补码为11111111 11111111 00000000 10110101(按int类型4字节保存),其十六进制为FF FF 00 B5,转换为十进制为4 294 901 941,八进制为03 77 77 60 02 65

4.输出字符串:printf函数的格式字符“%s”用于输出字符。

%ms,输出的字符串占m列,如字符本身长度大于m,则突破m的限制,将字符串全部输出。若小于m,则在左侧不空格;

%-ms,如果字符串长度小于m,则在m列范围内,字符串向左对齐,右侧补空格。

%m.ns,输出占m列,但只输出字符串中左侧n个字符。这n个字符输出在m列右侧,左侧补空格。

%- m.ns,其中mn含义同上,n个字符输出在m列范围的左侧,右侧补空格。如你n>m,m自动取n值,即保证n个字符正常输出。

             5.如果必须在源代码中对字符串拆行,可使用以下三种方法:

                        第一、使用多个printf语句,分别输出字符串中的各部分;

第二、在拆行的末尾跟上一个斜线(/),表示当前行字符串还未结束,下一行的内容仍然是字符串中的内容;

例如:printf(“使用printf函数输出字符串的例子,/

输出字符串为:%s /n,str),其中第二行必须顶格输入,否则空格仍然是字符串的一部分;

第三、采用字符串连接的方法,这是ANSIC得新方法。这种方法将两个相邻或仅由空白分隔的、用双引号括起来的字符串作为一个字符串。

例如:printf(“使用printf函数输出字符串的例子,“”

输出字符串为:%s /n,str

6.printf函数的返回值:返回打印输出的字符数目(包括‘/0’),若其执行出错,则返回一个负数;

7.理解输出列表:

         Printf函数的输出列表可以有多个表达式,其数量至少应与格式字符串中的格式字符数量相匹配。若多个格式字符的数量,多余表达式的值将不会输出;若少于格式字符的数量,则可能输出一些无意义的值。

      使用函数printf输出数据时,编译器将传递给函数printf的参数存入一个称为堆栈的内存区域。堆栈中的数据采用“后进先出”的方式,即最后保存的数据将先读出来。因此对于函数printf的参数列表,总是将其参数 从后到前的方法存放到堆栈中

Printf(“%d %d %f %e,i,l,f,d

堆栈

变量i(四个字节)

变量l(四个字节)

变量 f(八个字节,float类型默认按double类型存储)

变量d(八个字节)

 

 

原创粉丝点击