C语言学习笔记 lesson8 printf详解

printf详解

转换声明: %后的内容,按照一定的方式输出

整数

%d %i

 %o  八进制

%u  无符号十进制

%x %X 大小写的十六进制

浮点数

%a

%e   科学计数法

%g   进行适当匹配,区分有效数值,不会显示多余的0

%f

%lf

字符

%c

字符串

%s

指针

%p

百分号

%%


修饰符

标记

-  右对齐

+ 符合显示

空格  规定最大位数时以空格补全

0        规定最大位数时以空格补全

#

显示格式  %#o %#x

 保证打印一个小数点 %#f %#e

防止结果后的0被删除 %#G

数字

最小宽度  

%z  代表size_t


#include<stdio.h>

#define INTDEMO 250

int main()

{

 const double DOUBLEDEMO = 3.14159;

 const short  SHORTDEMO = 0xFFFF;

 

  printf("%2d\n",INTDEMO);                 位数小于本身 ,保留                                                   250

  printf("%10d\n",INTDEMO);               位数大于本身,补空格,默认右对齐                              250

  printf("%-10d\n",INTDEMO);             左对齐,所有空格加在后面                                       250     

  printf("%-010d\n",INTDEMO);           左对齐,所有空格加在后面(不会再后面补0)

  

printf("%f\n",DOUBLEDEMO);                                 3.141590

printf("%Lf\n",DOUBLEDEMO);                               3.141590

printf("%4.2Lf\n",DOUBLEDEMO);                         3.14

printf("%10.3Le\n",DOUBLEDEMO);                     3.142e+00

printf("%10.3Lf\n",DOUBLEDEMO);                      3.142

printf("%010.3Lf\n",DOUBLEDEMO);                   000003.142

printf("%+010.3Lf\n",DOUBLEDEMO);                +00003.142

printf("%c",SHORTDEMO);                                    会将short转化成int,会浪费效率


float  f_num = 3.0;

double b_num=3.0;

int i_num = 2000000000;

long l_num=1234567890;  

printf("%.lg %.lg %.lg %.lg\n",f_num,d_num,i_num,l_num);                    正常显示前两个

printf("%ld %ld\n",i_num,l_num);                                                                  正显示

printf("%.ld %.ld %.ld %.ld\n",f_num,d_num,i_num,l_num);                    全部错误显示  

 计算机传值是通过栈来传递的,当传递这几个数值后,printf会按照当前给定的类型去栈中取需要取的数据, 32位,64位 , 32位 , 32位,float 4byte,double 8 byte, int , long  4byte  ,取数据时,第一次取数据时取4byte解析取错误的值 ,然后又取4byte ,又取4byte。但因为计算机里所有的浮点寄存器都是64位的,计算时会将float转换成double类型,占8byte的空间,所以所有的输出都不正确。

printf 会返回打印了多少字符(不包括换行


return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值