为了账号安全,请及时绑定邮箱和手机立即绑定

为什么int , long int 输出不了正确结果?

为什么int , long int 输出不了正确结果?

C C++
丶辉色灬 2016-10-31 22:55:54
#include <stdio.h> int main() { int a, b, c, d; long int result, result1, result2, result3; a = 1; b = 2; c = 3; d = 4; result1 = a + b;    //在这里体验哦~ result2 = result1 * c; result3 = result2 / d;//结果为2.25【result2为浮点型】 result = (a + b)*c / d;//结果为2【(a+b)*c为整型】 printf("%f\n", result1); printf("%f\n", result2); printf("%f\n", result3); printf("%f\n", result); return 0; } 我改了 int ,long int 输不出正确结果   但是float 和 double 可以
查看完整描述

4 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

#include <stdio.h>
int main()
{
    int a, b, c, d;
    long int result, result1, result2, result3;
    a = 1;
    b = 2;
    c = 3;
    d = 4;
    result1 = a + b;    //在这里体验哦~
    result2 = result1 * c;
    result3 = result2 / d;//结果为2.25【result2为浮点型】
    result = (a + b)*c / d;//结果为2【(a+b)*c为整型】
    printf("%ld\n", result1);
    printf("%ld\n", result2);//long int result, result1, result2, result3;
	//定义为长整型,那么运算结果也是长整型
	//输出时格式为%ld
    printf("%ld\n", result3);
    printf("%ld\n", result);
    return 0;
}


查看完整回答
反对 回复 2016-11-01
?
半枯

TA贡献101条经验 获得超45个赞

拿result = (a + b)*c / d;举例,(1+2)*3/4=2!=2.25,因为0.25会被舍掉。

查看完整回答
反对 回复 2016-11-01
?
慕粉4246158

TA贡献4条经验 获得超0个赞

int,long int 都是整数型,你把result定义为整数型,在运算后所得的结果会转换成一个整数储存到result中,这样一来结果只要是小数就会变成整数,所以结果是小数的就都不对了,而float和double是小数型,所以无论结果是小数还是整数,都能得到正确结果。

查看完整回答
反对 回复 2016-11-01
?
风沙流年

TA贡献7条经验 获得超1个赞

你所指的正确结果是什么,进行运算之后会做相应的类型转换,变成int或者long int 类型,当然结果不正确。

查看完整回答
反对 回复 2016-10-31
  • 4 回答
  • 0 关注
  • 2413 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信