4行代码看谁能写出更简单的写法

liuhaochuan 2008-01-16 03:22:52
这是段反编译的代码,经过我简化,但结构不变.
void foo(int a,int b,int c)
{
int k = b;
if( a == 0) goto _L2; else goto _L1
_L1:
k++;
_L2:
if(k < c) goto _L1; else goto _L3
_L3:
return;
}

我还原成java 写成
void foo(int a,int b){
int k = b;
if(a==0) {
while(k<c) { k++; }
}
else
{
do{ k++; }while(k<c)
}
}

我相信原始的代码肯定没有这么复杂,有人能给出最优的解法吗?
...全文
502 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
JavaLover00000 2008-01-17
  • 打赏
  • 举报
回复
学习~~~
阿非 2008-01-17
  • 打赏
  • 举报
回复
学习~
insiku 2008-01-17
  • 打赏
  • 举报
回复
你的反编译工具真垃圾
visulcer 2008-01-17
  • 打赏
  • 举报
回复
可能是文件被混淆过的
这样不知道对不对?

void foo(int a, int b, int c) {
int k = b;
if (a != 0) {
k++;
}
while (k < c) {
k++;
}
}
daniel_kaka 2008-01-16
  • 打赏
  • 举报
回复
给你带个返回值

int foo(int a,int b,int c){
int k = b;
for(k=(a!=0?k+1:k); k<c; k++){
}
return k;
}
hanfengthinker 2008-01-16
  • 打赏
  • 举报
回复
帮顶了
daniel_kaka 2008-01-16
  • 打赏
  • 举报
回复
抱歉,前面写错了点~

void foo(int a,int b,int c){
for (int k=(a!=0?b+1:b); k<c; k++){
}
}
daniel_kaka 2008-01-16
  • 打赏
  • 举报
回复

public static void foo1(int a,int b,int c){
for ( int k = b; k < c; k = (a!=0?(k+1):k)){
}
}
syhan 2008-01-16
  • 打赏
  • 举报
回复
也可以是递归呵
大海Online 2008-01-16
  • 打赏
  • 举报
回复
public static int foo(int a, int b, int c) {
int k = (a == 0) ? b : b + 1;
while (k < c) k++;
return k;
}

或者:

public static int foo(int a, int b, int c)
{
int k;
for(k = a == 0 ? b : b + 1; k < c; k++);
return k;
}
Dan1980 2008-01-16
  • 打赏
  • 举报
回复
回复16楼:

int foo2(int k) {
//do something
}

int foo(int a, int b, int c) {
int k = b;
if (a!=0)
foo2(k++);
while (k<c) foo2(k++);
return k;
}
shan1119 2008-01-16
  • 打赏
  • 举报
回复
目前没有什么想法了.还是想办法解决楼主的问题吧,我是使不上劲了.
janewayne 2008-01-16
  • 打赏
  • 举报
回复
private static void foo1(int a,int b,int c){
int k = b<c?c:(a==0?b:b+1);
System.out.println(k);
}
healer_kx 2008-01-16
  • 打赏
  • 举报
回复
被MS BS不算什么,说明他们暂时不想弄Java。继续努力,直到有一天MS收购了SUN,你再去。。。
liuhaochuan 2008-01-16
  • 打赏
  • 举报
回复
我并不是要简单的取得一个返回值,这样吧我再改一下题目

//反编译代码如下:
int foo2(int k)
{
...do something
}

int foo(int a,int b,int c)
{
int k = b;
if( a == 0) goto _L2; else goto _L1
_L1:
foo2(k);
k++;
_L2:
if(k < c) goto _L1; else goto _L3
_L3:
return k;
}

//我手动还原后的代码如下:
int foo2(int k)
{
...do something
}

int foo(int a,int b,int c)
{
int k = b;
if(a==0)
{
while( k < c )
{
foo2(k);
k++;
}
}
else
{
do
{
foo2(k);
k++;
}while(k < c);
}
return k;
}

我相信原始的代码没有这么复杂 请教各位更优的解法
shan1119 2008-01-16
  • 打赏
  • 举报
回复
楼上的也去了?
Slugfest 2008-01-16
  • 打赏
  • 举报
回复
老比尔是谁? 此话怎讲? 你去MS面试被BS了?
shan1119 2008-01-16
  • 打赏
  • 举报
回复
好象是只有循环的情况下才会出现 goto
liuhaochuan 2008-01-16
  • 打赏
  • 举报
回复
在源代码里肯定是有循环的,我只是想不明白它是怎么跳到循环内部的.
shan1119 2008-01-16
  • 打赏
  • 举报
回复
甘草啊,要是老比尔有你这等眼光就好喽. ^_^
加载更多回复(10)
源码下载地址: https://pan.quark.cn/s/40677b766bda "ContextCapture 倾斜摄影快速、创新及全面空三建模与单机集群硬件部署方案2018" 此资源聚焦于倾斜摄影(ContextCapture)空三建模及单机集群硬件部署方案,致力于为用户呈现最快、最优成本效益的台式工作站、移动工作站、并集群的多样化部署选择。以下是该资源的详细知识点概述: 一、相关设备型号说明 * UltraLAB 是西安坤隆计算机科技有限公司推出的专属图形工作站品牌,具备三大卓越优势:顶尖的计算硬件架构、精准的业应用定制服务、专业的硬件系统优化工艺。 二、硬件部署方案 * 台式工作站部署建议:设备特色在于当前市场上最快的台式计算架构,适用于办公场景下,部门层级常规的倾斜摄影空三处理、三维建模。 * 便携式工作站部署建议:设备特色在于当前市场上最快的移动计算架构,适用于移动倾斜摄影的空三处理、三维建模工作站。 * 大数据量处理工作站推荐:设备特色在于极限自动超频加速与16个并存储构造,具备空三处理和三维建模最强的计算性能及海量高速并存储性能。 * 多设备并计算集群部署建议:针对海量图像数据计算产生的巨大需求,单机计算能力处理时间过长,效率不高,通过多台机器并集群,进空三处理、三维建模,显著减少处理时间。 三、部署方案深入解析 * 2.1 倾斜摄影建模(台式工作站)部署方案:设备特色在于最高的计算处理能力~6核5.2GHz,内存最大配置可达64GB,配备最新图灵架构的RTX显卡,相比市场其他品牌机器(单CPU、双Xeon处理器)快、具成本效益。 * 2.2 倾斜摄影建模(移动便携式工作站)硬件部署方案:设备特色在于最高的计算处理能力~6...

62,622

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧