易码技术论坛

 找回密码
 加入易码
搜索
楼主: king

一道折腾我好久的C题

[复制链接]
发表于 2008-1-7 23:13:25 | 显示全部楼层
想不出来比这更简练的答案了:
a<b&&a^=(b^=(a^=b));
 楼主| 发表于 2008-1-7 23:13:41 | 显示全部楼层
原帖由 月魂 于 2008-1-7 23:02 发表
a


在TC无法编译
发表于 2008-1-7 23:16:52 | 显示全部楼层
不会吧
tc这么烂?
发表于 2008-1-7 23:18:48 | 显示全部楼层
应该是
  1. a < b && (a ^= (b ^= (a ^= b)));
复制代码
&&的优先级高于^=
发表于 2008-1-7 23:19:20 | 显示全部楼层
还是lee猛啊。
 楼主| 发表于 2008-1-7 23:19:33 | 显示全部楼层
请问中间的&&在这里起到什么作用啊,实在搞不懂
发表于 2008-1-7 23:20:37 | 显示全部楼层
&&是:如果前面为假就不执行后面的了。
发表于 2008-1-7 23:21:48 | 显示全部楼层
但是要交换的话就得去掉了。
 楼主| 发表于 2008-1-7 23:22:08 | 显示全部楼层
谢啦,今天可学多了
发表于 2008-1-7 23:22:46 | 显示全部楼层
不是我写的

void main()
{
        int a,b;
       
        a=3;
        b=5;
        a < b && a ^= (b ^= (a ^= b));
       
        printf("a=%d,b=%d",a,b);
}
上面代码在lvc执行成果,显示
a=5,b=3
好像不多加那个括号也是对的
 楼主| 发表于 2008-1-7 23:22:54 | 显示全部楼层
EM果真卧虎藏龙啊
发表于 2008-1-7 23:23:27 | 显示全部楼层
我现在才知道原来题目是判断大小的啊,我还以为交换呢。
发表于 2008-1-7 23:25:46 | 显示全部楼层
原帖由 leesoft 于 2008-1-7 23:22 发表
不是我写的

void main()
{
        int a,b;
       
        a=3;
        b=5;
        a < b && a ^= (b ^= (a ^= b));
       
        printf("a=%d,b=%d",a,b);
}
上面代码在lvc执行成果,显示
a=5,b=3
好像不多加那个括号也是对的 ...

优先级搞错了吧?VC上运行代码出错。
发表于 2008-1-7 23:27:21 | 显示全部楼层
??lee突然换了头像?出乎意料啊。
 楼主| 发表于 2008-1-7 23:30:19 | 显示全部楼层
没一个TC和VC都编译不了那行代码
发表于 2008-1-7 23:35:05 | 显示全部楼层
看看我的新头像
由lvc程序生成的messagebox
 楼主| 发表于 2008-1-7 23:35:37 | 显示全部楼层
a<b&&(a^=(b^=(a^=b)));

这样就行了,加多一个括号
 楼主| 发表于 2008-1-7 23:38:07 | 显示全部楼层
大家考试怎样啦

我历史挂了
发表于 2008-1-7 23:45:22 | 显示全部楼层

你历史挂了这个事情已经成为了历史,忘掉它吧
 楼主| 发表于 2008-1-7 23:48:25 | 显示全部楼层
对了,为啥我换不了自己的头像?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-5-2 16:15 , Processed in 0.036856 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表