标题:?:表达式的执行顺序问题?
只看楼主
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
 问题点数:0 回复次数:23 
?:表达式的执行顺序问题?
程序:
#include "stdio.h"
main()
{
    int x=2,y=3,z;
    z=(++x>=y--)?((--y==1)?x--:--y):y--;
    printf("%d\n",z);
}
运行结果: 3
1.这个程序的执行顺序是怎样的?
2.先执行右边的?:表达式还是左边?
3.如果先执行右边的,那么执行完之后y的值会应用于左边吗?
  如果执行左边先呢,y的值回不会赋给右边?

我是新人,希望大家不吝赐教~~谢谢~~
搜索更多相关主题的帖子: 顺序 表达 int main 
2008-01-22 17:54
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
得分:0 
无意义的问题。。。。。。。。。。
2008-01-22 18:06
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:0 
深入思考是好事,但是须知真理前进一小步就变成谬误了,所以并不是越深入越好的。
否则就像楼上说的,沦为无意义行为了。
2008-01-22 18:30
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
得分:0 
但是我不知道怎样计算啊~~计出的答案跟程序输出的不同...
2008-01-22 20:12
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
得分:0 
别这样写程序啊````一点都不好玩```

女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2008-01-22 20:29
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
得分:0 
是书上的练习题来的....我也知道不好玩....
但是被他困惑很不爽....
2008-01-22 20:30
永夜的极光
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:2721
专家分:1
注 册:2007-10-9
得分:0 
即使你计算出来正确的结果又怎样?写程序的时候谁会这么写?

不要浪费时间在这种无聊的题目上,一点作用都没有

从BFS(Breadth First Study)到DFS(Depth First Study)
2008-01-22 20:30
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
得分:0 
嗯...有道理.....谢谢....
2008-01-22 20:31
菜鸭
Rank: 1
等 级:新手上路
帖 子:262
专家分:0
注 册:2007-12-9
得分:0 
爱钻牛角尖
我就喜欢钻牛角尖,对于LZ的这个程序,运行之后也是不解,不过经过我对程序一步一步分解,终于理解了。我想,对于我以后,是应该有些帮助的,尤其是X++与++X的区别。
1,首先,先做(++x>=y--)?,这个式子是成立的,运行之后,X=3,Y=2;
2,其次,再做(--y==1)?,式子成立,运行之后,X=3,Y=1;
3,再次,就成了这个式子:Z=X--。由于是先赋值后自减,所以Z值为3,x值为2。

所以,这个式子值为3。




    对于资深的高手和天赋极高的“神童”来说,可能不算什么。但是我想,弄懂弄透每个问题,不让自己知其然而不知其所以然,也是应该的。
    把自己的心得写出来,与一些“笨鸟”们共勉,我们早起些,晚休息些,多飞一会儿吧!

[[italic] 本帖最后由 菜鸭 于 2008-1-23 09:42 编辑 [/italic]]
2008-01-22 21:17
jansongg
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-7-20
得分:0 
原帖由 [bold][underline]菜鸭[/underline][/bold] 于 2008-1-22 21:17 发表 [url=http://bbs.bccn.net/redirect.php?goto=findpost&pid=1185954&ptid=198334][/url]
爱钻牛角尖
我就喜欢钻牛角尖,对于LZ的这个程序,运行之后也是不解,不过经过我对程序一步一步分解,终于理解了。我想,对于我以后,是应该有些帮助的,尤其是X++与++X的区别。
1,首先,先做(++x>=y--)?,这个式子是成立的,运行之后,X=3,Y=2;
2,其次,再做(--y==1)?,式子成立,运行之后,X=3,Y=1;
3,再次,就成了这个式子:Z=X--。由于是先赋值后自减,所以Z值为3,Y值为2。

所以,这个式子值为3。




    对于资深的高手和天赋极高的“神童”来说,可能不算什么。但是我想,弄懂弄透每个问题,不让自己知其然而不知其所以然,也是应该的。
    把自己的心得写出来,与一些“笨鸟”们共勉,我们早起些,晚休息些,多飞一会儿吧!


知音啊`~~说出了我心中的想法.

特别是
对于资深的高手和天赋极高的“神童”来说,可能不算什么。但是我想,弄懂弄透每个问题,不让自己知其然而不知其所以然,也是应该的。
 把自己的心得写出来,与一些“笨鸟”们共勉,我们早起些,晚休息些,多飞一会儿吧!

这句

 ..就算这个没用..不弄懂始终不舒服..而且问了这么多人,竟然没人正式答复.
总之就是非常感谢菜鸭兄弟了`~` 十万分感谢~~~~
后来我也想到把这个换成for语句解决了`~
2008-01-23 09:09



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-198334-1-1.html




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

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