当前位置: 首页 > 知识库问答 >
问题:

重新编写代码以删除条件语句

陆俭
2023-03-14

是否可以重写以下内容,使其不包含任何条件语句?我想使用按位运算之类的东西可能会有一些聪明的技巧?

int a = // some value
int b = // some other value between 0 and max int
if(b >= 3)
{
    return a + 1;
}
else
{
    return a;
}

编辑:澄清一下,我不是在寻找一种去除条件句的通用方法。我正在寻找一个技巧,从这个非常具体的代码中删除条件。把它当成一个学术难题。

举个例子,删除条件(在某些情况下会产生性能增益)的一种方法是预先计算一个查找表,然后用< code>b索引。在这种特殊情况下,这很棘手,因为< code>b可能是一个非常大的数字。还有别的办法吗?

共有3个答案

公冶高义
2023-03-14

你可以通过这样做来让它变得更好:

int a = // some value
int b = // some other value between 0 and max int
return (b >= 3) ? (a+1) : a;
常鸿朗
2023-03-14
uint a = // some value
uint b = // some other value between 0 and max int
bool c = b & 0xFFFC
return a + Convert.ToInt32(c);

最快的可能是按位运算往往非常快

uint a = // some value
uint b = // some other value between 0 and max int
return (b & 0xFFFC) ? a+1 : a;
沈栋
2023-03-14

给你。

return a - ((2 - b) >> 31);

解释:

r=2-b,

r

 类似资料:
  • 问题内容: 我正在尝试为Java创建一个小的功能性编程库(只是为了解决自己的问题)。虽然定义高阶函数为S,S和就是我所遇到的这个问题:需要收集的功能,并返回相同类型的具有几乎相同的实现的集合,但必须重新界定为每个数据结构-s,s和s。 例如,这是s和s 的函数的实现: 一个函数: 如从这个例子可以看出,对于实施方式中的主体和几乎相同。 有喜欢很多很多的功能,并在我的图书馆,每一类又是对每种类型我很

  • 我有两张桌子——桌子1和桌子2。 它们有相同的列——Col1、Col2、Col3、Col4(整数)。 我将Table_2行插入Table_1。 表_1和表_2有一些基于Col1和Col2的重复值。我需要保留表_2的值,并删除表_1的重复值。 例如: 我尝试了以下方法-

  • 上面的代码是创建魔方的代码。我如何以更简单的形式编写下面的代码,让java初学者能够理解?

  • 我想写一个可以返回Future而不是void start的方法 另外,我想在删除文件时应用锁。 public static void start(Vertx Vertx)引发异常{Vertx.settimer(timeInterval,id->{File File=新文件(config.getStringProperty(“File.upload.directory”,null).get());

  • 首先,允许我编辑minecraft服务器代码吗? 并且我在IntelliJ中获得了minecraft_server.jar的源代码,但是如果我想编译,我会得到100个错误,因为代码中有以下内容: 我真的不知道如何处理这些错误,因为在finshed jar中,它就像我的例子一样。 Minecraft服务器:https://Minecraft.net/download

  • 我的模型包含大量的代理。但是,我希望部分删除/删除一些在运行时完成工作的代理,以便释放计算内存、加快模型执行并避免OOM。 context.remove()是否真的永久消除/杀死代理(对象)?此操作后是否释放内存?如果不是,正确的过程是什么?