| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 680 人关注过本帖
标题:斑主,请教三目运算的问题。
只看楼主 加入收藏
deanhjy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-16
收藏
 问题点数:0 回复次数:7 
斑主,请教三目运算的问题。
#include <stdio.h>
void main()
{
  int x=5,y=1;
 printf("%d",x>y?1:1.5);
}

为什么输出结果是0。
为什么输出是0呢,书上说1:1.5都需要转换成float,可结果怎么会是0呢?

[ 本帖最后由 deanhjy 于 2010-10-16 13:57 编辑 ]
搜索更多相关主题的帖子: 运算 
2010-10-16 12:38
someday
Rank: 3Rank: 3
来 自:保定
等 级:论坛游侠
帖 子:83
专家分:116
注 册:2010-10-8
收藏
得分:0 
#include <stdio.h>
void main()
{
  int x=5,y=1;
  float z;
  z=x>y?1:1.5;
  printf("%f\n",z);
}
这样写就能出来你想要的结果了
2010-10-16 14:01
逐渐学习
Rank: 6Rank: 6
等 级:侠之大者
帖 子:113
专家分:454
注 册:2010-9-26
收藏
得分:0 
看看这篇帖子<<printf("%d",3>2?1:1.5); 输出结果为什么是0而不是1呢?>>.
下面是高手说的原话:

学c的时候,我们一定听说过一句话
就是c和机器走的比较近。什么意思呢?就是c只支持机器直接支持的东西。
原来机器不支持浮点型,c也就不支持。
所以c里面所有的复制都是原样拷贝。
printf("%d",3>2?1:1.5);由于1.5是浮点型,导致整个式子的结果都是浮点型。
所以,1实际上是以1.0的double/float存储的,用%d,直接截取后面的一半,自然是0。可以试一下下面的式子。(在devc++上是8);
printf("%d",sizeof(3>2?1:1.5))

帮人《---》帮己
2010-10-16 14:52
deanhjy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2010-10-16
收藏
得分:0 
谢谢三楼的,我明白了。
2010-10-22 18:26
jiangshuangz
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2010-10-18
收藏
得分:0 
哎!同样是B往北走就叫NB往南走就叫SB!人生最重要的就是方向啊!
2010-10-22 22:23
outsider_scu
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:430
专家分:1333
注 册:2010-10-21
收藏
得分:0 
受教了。

编程的道路上何其孤独!
2010-10-22 23:09
kidangel666
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:93
专家分:139
注 册:2010-9-15
收藏
得分:0 
有点看不懂
2010-10-23 21:08
vandychan
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
等 级:贵宾
威 望:18
帖 子:2296
专家分:6418
注 册:2010-8-20
收藏
得分:0 
同样是B往北走就叫NB往南走就叫SB!????经典

到底是“出来混迟早要还”还是“杀人放火金腰带”?
2010-10-23 21:10
快速回复:斑主,请教三目运算的问题。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031437 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved