当前位置: 代码迷 >> C语言 >> printf("%d",3>2?1:1.5); 输出结果为什么是0而不是1呢?
  详细解决方案

printf("%d",3>2?1:1.5); 输出结果为什么是0而不是1呢?

热度:763   发布时间:2008-03-12 19:37:23.0
汇编都忘光了。。楼上能解释一下?
----------------解决方案--------------------------------------------------------
在TC环境下怎么不能运行啊
----------------解决方案--------------------------------------------------------
qfyzy比较爱动脑筋,不过有些东西未免有些想当然,缺乏严谨精神。
1.0用IEEE 754标准表示为:3F F0 00 00 00 00 00 00
看看我7楼反汇编后给printf压栈传递参数时传递的是什么?

下面是权威的解释:
The result types of arithmetic operators are determined by a set of rules known as "the usual arithmetic conversions".The overall aim is to  produce a result of the "largest"  operand type.For example, if a binary operator has a floating-point operand, the computation is done using  floating-point arithmetic and the result is afloating-point value.
----------------解决方案--------------------------------------------------------
我测试大小后的确是8字节的
----------------解决方案--------------------------------------------------------
和那位说的一样``结果是8个字节``那就是浮点数double``有不同的类型的数据的时候``类型会被统一成最大的那个类型``

还有当你数据的类型和你的格式不匹配也回出现想不到的结果``

我做了一下测试 :





在有两种类型的时候``大家最好统一输入类型或是根据情况使用强制类型转换``
----------------解决方案--------------------------------------------------------
  相关解决方案