关于C语言格式输出和数据类型。求大神解释下图现象。

 我来答
有你的晴天12138
2015-06-29 · TA获得超过1001个赞
知道小有建树答主
回答量:305
采纳率:80%
帮助的人:210万
展开全部
int c = a / b, 在 C 语言中,整数的除法是取整,所以 5 / 2 = 2;
float d = a / b, 意义一样,将计算出的 2 的值赋给一个 double 型变量,其结果仍然是 2, 只不过在内存中表现为 float 型;
double e = a / b, 同样,e 是一个双精度浮点型,结果为 2;
重点在显示上,格式控制输出时,后面的参数必须和格式控制相符。
正确的输出方式为:printf("%d %f %lf\n", c, d, e);

扩展:printf 遇到格式控制时,会从栈中取出对应的内存,并强制解析为格式控制所指示的类型。
比如:遇到第一个 %f, 它会取出第一个参数的地址,向后取 sizeof(float) 的内容,并以 float 形式取出。我们知道,int 型和 float 型的变量虽然占用的内存均为 4 字节,但它们的内存表示方法不相同。在小端模式下,int 型会以低位先存的方式保存在内存中,而 float 存储时会按符号、指数以及尾数进行存储(具体的表示方法可以百度之),所以 int 型的数据以 %f 显示,或者 float 型的数据以 %d 显示,结果都是不正确的,其他的类型类同。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式