团鱼之徒 发表于 2013-6-18 12:29:58

想求问c语言中各类型输出的不同。

例1:
#include <stdio.h>
void main()
{       
        printf("%f,%d\n", 1.0/3*3,1.0/3*3);    //这里的值不是等下0.99999999····
}

结果为:1.000000 , 0            问%f有四舍五入功能吗?         


例2:
#include <stdio.h>void main(){                printf("%d,%f,%lf,%g",1.0/3*3,1.0/3*3,1.0/3*3,1.0/3*3);        }

结果为:0 ,0.000000 ,0.000000 ,5.29981e-315                问为什么先输出%d后输出%f,接着后面的怎么都结果不一样了?

求解释~~~谢谢

wwwxinyu1990 发表于 2013-6-18 13:57:26

格式控制包括格式说明和格式字符。
格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。格式说明总是由“%”字符开始的。不同类型的数据用不同的格式字符。
格式字符有d,o,x,u,c,s,f,e,g等。


%d整型输出,%ld长整型输出,

%o以八进制数形式输出整数,

%x以十六进制数形式输出整数,

%u以十进制数输出unsigned型数据(无符号数)。

%c用来输出一个字符,

%s用来输出一个字符串,

%f用来输出实数,以小数形式输出,

%e以指数形式输出实数,

%g根据大小自动选f格式或e格式,且不输出无意义的零。

PS:转自http://blog.csdn.net/cfanlwn/article/details/5053794
有时不太确定可以自己上机实验的
#include<stdio.h>
void main(){
        double s;
        s=7/9.0;
        printf("%6f",s);
}
运行结果是:0.777778
说明是按四舍五入的。

PS:转自http://zhidao.baidu.com/question/410902198.html

许多文档或网上相关的知识有很多,可以下点功夫找找。
(专业不是学C的,只是很久之前学过点基础,所以上网找了下)

仰望天上的光 发表于 2013-6-18 22:48:00

1. printf函数是个不定参数的函数,其实际参数个数以及类型由第一个参数中的%f,%d等来解释
2. printf中%f和%lf含义一致,其实后面参数中的所有float类型也都会被自动提升为double类型(但是注意啊,scanf就会区别float和double)
3. printf("%d\n", 1.0);中,第二个参数是8个字节的double类型,但函数第一个参数中却使用了%d所以只取最低4个字节的内容作为这个要显示的int的内容。至于取出的为什么是0,这个涉及double在内存中的表示,为了不岔开话题,我们暂时相信这个double的最低4个字节全部都是0(想实证的话自己去查IEEE754长浮点数的标准)
4.当然如果printf居然还有其它输入参数,就会继续使用刚才double剩下的4个字节。。。
5. 兄弟啊,不要纠结于这样的问题了,考试不是最终的目的,成为能够解决实际问题的程序员才是我们最终的目标。

zer0 发表于 2013-6-19 13:28:54

3L正解!
实际运用 谁会无聊去这么写!;P

团鱼之徒 发表于 2013-6-19 13:33:13

仰望天上的光 发表于 2013-6-18 22:48 static/image/common/back.gif
1. printf函数是个不定参数的函数,其实际参数个数以及类型由第一个参数中的%f,%d等来解释
2. printf中%f和 ...

前面还是听得还是有点模模糊糊。最后一句话,比较实在。说得对考试不是最终的目的。
谢谢版主的答复。

fanki 发表于 2013-6-19 19:27:36

其实要看看编译器的~~
我之前在linux下用gcc的话,printf的%d可以把小数部分不要。
不过用vc就之前按类型来了~~%d的话就会打出不是你想要的数字。
所以在vc要严格类型~~
二楼有写分类~~
如果你想四舍五入可以这样:
double a = 5.156;
int b = ( int )( a + 0.5);
printf( "%d\n", b );
这样子就是四舍五入~~
希望对你有用~~一起学习~~{:7_155:}

machine1 发表于 2013-6-20 09:35:38

是哈 我差点也纠结于这样的问题了恩 格式字符在实际用到的时候在具体分析就好了

玉宁417 发表于 2013-9-27 16:06:52

呵呵,新人求支持
呵呵,新人求支持
呵呵,新人求支持
呵呵,新人求支持:loveliness:

fishso 发表于 2013-9-29 22:12:06

找本手册查一下就行了

阔怀 发表于 2015-8-23 12:25:25

看看
页: [1]
查看完整版本: 想求问c语言中各类型输出的不同。