搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 请帮我看一下, 关于条件表达式的,我看晕了,
标题:
请帮我看一下, 关于条件表达式的,我看晕了,
只看楼主
死了都要C
来 自:四川成都
等 级:
贵宾
威 望:
13
帖 子:1582
专家分:116
注 册:2006-12-7
第
11
楼
得分:0
当表达试比较复杂时一定要用括号和空格
女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-04-01 20:41
wudizizai
等 级:
新手上路
帖 子:18
专家分:0
注 册:2008-2-25
第
12
楼
得分:0
恩,知道了,谢谢斑竹.
2008-04-01 20:53
lingyu
等 级:
新手上路
帖 子:24
专家分:0
注 册:2006-8-15
第
13
楼
得分:0
k=i-j?(i+j):((i-3)?j:i);
三元条件运算 还是别写这么复杂的好
应该是这样吧
2008-04-01 21:09
彦宏
等 级:
新手上路
帖 子:7
专家分:0
注 册:2007-9-18
第
14
楼
得分:0
#include<iostream.h>
void main()
{
int i(3),j(4),k;
k=(i>j)?++i:++j;
cout<<i<<'\t'<<j<<'\t'<<k<<endl;
k=i-j?i+j:i-3?j:i;/*看不懂,不知道顺序是怎么样的?*/
cout<<i<<'\t'<<j<<'\t'<<k<<endl;
}
首先,我们必须知道,?:是条件操作符,它的优先级次于算术操作符,并且它是右结合的
好,由k=(i>j)?++i:++j;知道
i=3,j=5
那么k=i-j?i+j:i-3?j:i;可等价于
k=(i-j)?(i+j):((i-3)?j:i)
那么即为
k=-2?8:(0?5:3)
你应该知道(0?5:3)的结果吧 是3
那么进一步化简为
k=-2?8:3
由非0即1可知
k=8
所以输出结果
3 5 5
3 5 8
[[it] 本帖最后由 彦宏 于 2008-4-1 23:02 编辑 [/it]]
2008-04-01 23:01
tian_baoyu
等 级:
新手上路
帖 子:7
专家分:0
注 册:2008-4-2
第
15
楼
得分:0
k=(i-j) ? (i+j) : ((i-3) ? j : i)
2008-04-02 09:22
15
2/2页
1
2
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-206433-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.069803 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved