| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6496 人关注过本帖
标题:三元运算符嵌套问题
只看楼主 加入收藏
lhlasdf
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-11-7
收藏
得分:0 
运算:-- , ++ 是什么意思 ?

运行x-->(y+x)?5:25>y++?'1':'2' 这个表达式以后,
x=0 y=1 吗?

25>y++?'1':'2' 即25>1?‘1’:’2‘ 结果 为'1'

x-->(y+x)?5:‘1’ 即 1 > 1 ? 5: '1' 结果 怎么能为 5 呢?

ξ蜗牛ξ£说等我爬上树,我就,我就会变成蝴蝶了£
2006-09-19 21:12
lhlasdf
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-11-7
收藏
得分:0 
请 zzc0816 明示好吗,我已经闷了好多天了,受不了!!!一定详细帮我讲明白,,会不会是,三元运算符短路,,的情况呢,,我在机上测试的,,最后,x 和y的值都是 0 呀,,

ξ蜗牛ξ£说等我爬上树,我就,我就会变成蝴蝶了£
2006-09-19 21:15
cwande
Rank: 2
等 级:新手上路
威 望:3
帖 子:333
专家分:0
注 册:2006-8-18
收藏
得分:0 
可能是编译器的问题,
偶的机子上答案是49,
最后x=0,y=1;

汗,都懒得写代码了.......... cheat了一个威望,哈.....
2006-09-19 21:33
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用cdmalcl在2006-9-14 16:51:35的发言:
原来三目运算是以差分成几个语句的方式编译的啊?

int x=1,y=0
 x-- >(y+x)?5:‘1’
 ∧
这个部分按照语句编译
所以这里的x=1 而到了(x+y)时x=0了
明白了么 lhlasdf

2006-09-19 21:49
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
正確答案應該是49了

1是char

ascii碼是49

x-->(y+x)?5:25>y++?'1':'2'

先25>y++?'1':'2' 25>0 返回'1' 然後y=1

再x-->(y+x)?5:'1' 1>(1+0) 返回'1'

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-09-20 09:09
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用chenjin145在2006-9-20 9:09:59的发言:
正確答案應該是49了

1是char

ascii碼是49

x-->(y+x)?5:25>y++?'1':'2'

先25>y++?'1':'2' 25>0 返回'1' 然後y=1

再x-->(y+x)?5:'1' 1>(1+0) 返回'1'

编译器的问题
你的肯定不是TC

2006-09-20 12:34
zzc0816
Rank: 1
等 级:新手上路
帖 子:61
专家分:7
注 册:2006-9-14
收藏
得分:0 
x-- = 1; 运用完后要减 1 的拉```
所以 y+x = 0
cdmalcl 解释了哦```

2006-09-20 13:30
lhlasdf
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2005-11-7
收藏
得分:0 

致: cdmacl ,同志
int x=1,y=0
 x-- >(y+x)?5:‘1’
 ∧
这个部分按照语句编译
所以这里的x=1 而到了(x+y)时x=0了

在这个时候,y 已经变成 1 了

x-->(y+x)?5:'1' 1>(1+0) 返回'1' 即 49
我还是算不出 5 呀,,


ξ蜗牛ξ£说等我爬上树,我就,我就会变成蝴蝶了£
2006-09-20 20:43
hahaworld
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2006-9-3
收藏
得分:0 
ding
tai shuai le

哈哈!!!
2006-09-20 20:53
cdmalcl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:24
帖 子:4091
专家分:524
注 册:2005-9-23
收藏
得分:0 
以下是引用lhlasdf在2006-9-20 20:43:38的发言:

致: cdmacl ,同志
int x=1,y=0
 x-- >(y+x)?5:‘1’
 ∧
这个部分按照语句编译
所以这里的x=1 而到了(x+y)时x=0了

在这个时候,y 已经变成 1 了

x-->(y+x)?5:'1' 1>(1+0) 返回'1' 即 49
我还是算不出 5 呀,,

是没和你讲清楚
还有个很重要的地方我没有说
10楼说的不对
我当时也疏忽了
错在 x-- >(y+x)?5:‘1’ 中的'1' 那个根本不是'1'
而只是 25>y++?'1':'2'
意思说当前面x-- >(y+x) 成立的时候运算式直接返回 5 当不成立时 返回25>y++?'1':'2'
所以后面的y++就没做运算 前面自然就是 1>0+0 了
这是在TC中
在VC或者其他的WINDOWS编译器中可能就不一样了

2006-09-20 21:08
快速回复:三元运算符嵌套问题
数据加载中...
 
   



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

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