[挑战]还有比我这个更短更好的swap方法吗

qq13833254607 qq13833254607 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

namespace test
{
using System;
class Program
{
static void Main(string[] args)
{
int a, b;
a = 100;
b = 3;
b = a + 0 * (a = b);
Console.WriteLine(a + "," + b);
}
}
}

今天突然想到的,在网上搜了半天没发现同样的,和其他的一些方法比了一下,我觉得我这个是最优的了,最起码从效率上毫无疑问是最优的,看IL就知道

//000011: b = a + 0 * (a = b);
IL_0005: ldloc.0
IL_0006: ldloc.1
IL_0007: stloc.0
IL_0008: stloc.1

没有运算,只有赋值

反汇编也差不多,

b = a + 0 * (a = b);
0000002f mov eax,dword ptr [ebp-8]
00000032 mov dword ptr [ebp-10h],eax
00000035 mov eax,dword ptr [ebp-0Ch]
00000038 mov dword ptr [ebp-8],eax
0000003b mov eax,dword ptr [ebp-10h]
0000003e mov dword ptr [ebp-0Ch],eax
...全文

相关推荐

评论 64
收藏 已收藏
分享
返回顶部
qq13833254607
非技术区 7,776 成员 63,111 内容