当前位置: 代码迷 >> C语言 >> [原创]谁给我解释下这个程序的运行结果,谢谢!
  详细解决方案

[原创]谁给我解释下这个程序的运行结果,谢谢!

热度:172   发布时间:2005-08-23 02:04:00.0
[原创]谁给我解释下这个程序的运行结果,谢谢!
#include<stdio.h>



void main()

{

    int x=1,y=0,z;

    z=x-->(y+x)?5:25>y++?1:2;

    printf("%d, %d ,%d\n",x,y,z);

    getch();

}
搜索更多相关的解决方案: 结果  运行  解释  

----------------解决方案--------------------------------------------------------
还想问什么?

?:结合性是先右后左的,<优先,你看看什么结果啊

[此贴子已经被作者于2005-8-23 10:25:47编辑过]



----------------解决方案--------------------------------------------------------
不知道你运行过与分析过程序没有,不要回答得那么草率。
----------------解决方案--------------------------------------------------------
回复:(magic475)[原创]谁给我解释下这个程序的运行...
应该输出:0,1,1 是这样的:根据优先级和结合规则,“=”低于“?:”再低于“>” 所以先计算“>”,再计算“?:”,最后“=” “=”从右到左 其他两个从左至右 z=x-->(y+x)?5:25>y++?1:2; 应该解释为: z=( ( (x-->(y+x)) ? 5 : ( 25>y++ ) ? ) 1 : 2); 故得结果
----------------解决方案--------------------------------------------------------
不好意思 修改一下: z=x-->(y+x)?5:25>y++?1:2; 应该解释为: z=( ( (x-->(y+x)) ? 5 : ( 25>y++ ) ) ? 1 : 2);
----------------解决方案--------------------------------------------------------
我不懂楼上的是用什么编译器得到那样的结果。
我用TC运行得到的结果是0,0,5。如何解释?
----------------解决方案--------------------------------------------------------
我在VC6.0下运行的0,1,1 然后在TC2.0下运行的确实是0,0,5 我想在TC下可能是这么解释的 z=x-->(y+x)?5:25>y++?1:2; 解释为: z=( (x-->(y+x)) ? 5 : (( 25>y++ ) ? 1 : 2 ) ) ; 如果这样的话,在第一个问号得 真 后,(5:)后边的语句(( 25>y++ ) ? 1 : 2 ) 便不再执行 于是x=0 y=0 z=5 唯一的解释是:Borland 和 Microsoft 不是一伙的
----------------解决方案--------------------------------------------------------
z=x-->(y+x)?5:25>y++?1:2;
请问下里面的?和;怎么定义的?
----------------解决方案--------------------------------------------------------
to sdusea: 我想你是对的。 我的理解是这样: x--的值为1;y+x的值为0;所以x-->(y+x)为真
----------------解决方案--------------------------------------------------------
  相关解决方案