下列程序段的输出结果是 int i; long l; float f; double d; i=l=f=d=8/5; printf("%d,%ld,%3.1f,%3.1f\n"(接上面),i,l,f,d);答案是:1,1,1.0,1.0 请问为什么是1.0而不是1.6呢,8/5明明是1.6的啊,请高手详细讲解啦,感激
来源:学生作业帮助网 编辑:作业帮 时间:2024/06/27 12:25:58
![下列程序段的输出结果是 int i; long l; float f; double d; i=l=f=d=8/5; printf(](/uploads/image/z/3689965-37-5.jpg?t=%E4%B8%8B%E5%88%97%E7%A8%8B%E5%BA%8F%E6%AE%B5%E7%9A%84%E8%BE%93%E5%87%BA%E7%BB%93%E6%9E%9C%E6%98%AF+int+i%3B+long+l%3B+float+f%3B+double+d%3B+i%3Dl%3Df%3Dd%3D8%2F5%3B+printf%28%22%25d%2C%25ld%2C%253.1f%2C%253.1f%5Cn%22%EF%BC%88%E6%8E%A5%E4%B8%8A%E9%9D%A2%EF%BC%89%2Ci%2Cl%2Cf%2Cd%29%3B%E7%AD%94%E6%A1%88%E6%98%AF%EF%BC%9A1%2C1%2C1.0%2C1.0+%E8%AF%B7%E9%97%AE%E4%B8%BA%E4%BB%80%E4%B9%88%E6%98%AF1.0%E8%80%8C%E4%B8%8D%E6%98%AF1.6%E5%91%A2%2C8%2F5%E6%98%8E%E6%98%8E%E6%98%AF1.6%E7%9A%84%E5%95%8A%2C%E8%AF%B7%E9%AB%98%E6%89%8B%E8%AF%A6%E7%BB%86%E8%AE%B2%E8%A7%A3%E5%95%A6%2C%E6%84%9F%E6%BF%80)
下列程序段的输出结果是 int i; long l; float f; double d; i=l=f=d=8/5; printf("%d,%ld,%3.1f,%3.1f\n"(接上面),i,l,f,d);答案是:1,1,1.0,1.0 请问为什么是1.0而不是1.6呢,8/5明明是1.6的啊,请高手详细讲解啦,感激
下列程序段的输出结果是 int i; long l; float f; double d; i=l=f=d=8/5; printf("%d,%ld,%3.1f,%3.1f\n"
(接上面),i,l,f,d);
答案是:1,1,1.0,1.0
请问为什么是1.0而不是1.6呢,8/5明明是1.6的啊,请高手详细讲解啦,感激不尽
下列程序段的输出结果是 int i; long l; float f; double d; i=l=f=d=8/5; printf("%d,%ld,%3.1f,%3.1f\n"(接上面),i,l,f,d);答案是:1,1,1.0,1.0 请问为什么是1.0而不是1.6呢,8/5明明是1.6的啊,请高手详细讲解啦,感激
我刚才用VC++ 2010 测试了一下,果然是你说的这个答案.我调式了一下,看了一下运行的过程.下面给你解释一下:
其实关键是这句:
i=l=f=d=8/5
这里等号总是先算最右边,8/5 两个整数相除,默认结果也是整数,所以就是 1.0.这个1.0依次赋值给左边的那些数,并且会自动类型匹配.所以就会出现你看到的结果了.
要想得到 1.6,可以改成这样:
i=l=f=d=(double)8/5
结果就是1,1,1.6,1.6 了.