压缩嵌套的switch语句 [英] Condensing nested switch statements

查看:73
本文介绍了压缩嵌套的switch语句的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在与我关于逻辑XOR的问题相关的注释中,我正在尝试使用一种非混淆的方式来压缩以下代码块

(这和往常一样,我没写过):


switch(int_val_1){

case 0:

switch(int_val_2 ){

case enum_val_1:return(num1 == num2);

case enum_val_2:return(num1< = num2);

case enum_val_3:return(num1> = num2);

默认值:return(true);

}

案例1:

switch(int_val_2){

case enum_val_1:return(num1!= num2);

case enum_val_2:return(num1> num2);

case enum_val_3:return(num1< num2);

默认值:return(true);

}

默认值:

返回true;

}


有什么建议吗?


-

Christopher Benson-Manica |我*应该*知道我在说什么 - 如果我

ataru(at)cyberspace.org |不,我需要知道。火焰欢迎。

On a note related to my question about logical XOR, I''m trying to
think of a non-obfuscated way to condense the following code block
(which, as usual, I did not write):

switch( int_val_1 ) {
case 0:
switch( int_val_2 ) {
case enum_val_1: return( num1 == num2 );
case enum_val_2: return( num1 <= num2 );
case enum_val_3: return( num1 >= num2 );
default: return( true );
}
case 1:
switch( int_val_2 ) {
case enum_val_1: return( num1 != num2 );
case enum_val_2: return( num1 > num2 );
case enum_val_3: return( num1 < num2 );
default: return( true );
}
default:
return true;
}

Any suggestions?

--
Christopher Benson-Manica | I *should* know what I''m talking about - if I
ataru(at)cyberspace.org | don''t, I need to know. Flames welcome.

推荐答案

Christopher Benson-Manica< at *** @ nospam.cyberspace.org>写道:
Christopher Benson-Manica <at***@nospam.cyberspace.org> wrote:
switch(int_val_1){
案例0:
switch(int_val_2){
case enum_val_1:return(num1 == num2);
case enum_val_2:return(num1< = num2);
case enum_val_3:return(num1> = num2);
默认值:return(true);
}
案例1:
switch(int_val_2){
case enum_val_1:return(num1!= num2);
case enum_val_2:return(num1> num2);
case enum_val_3 :return(num1< num2);
默认值:return(true);
}
默认值:
返回true;
}
有什么建议吗?
switch( int_val_1 ) {
case 0:
switch( int_val_2 ) {
case enum_val_1: return( num1 == num2 );
case enum_val_2: return( num1 <= num2 );
case enum_val_3: return( num1 >= num2 );
default: return( true );
}
case 1:
switch( int_val_2 ) {
case enum_val_1: return( num1 != num2 );
case enum_val_2: return( num1 > num2 );
case enum_val_3: return( num1 < num2 );
default: return( true );
}
default:
return true;
}

Any suggestions?




是的:为什么?这段代码并没有真正混淆。好吧,_design_可能

并不是那么热,有两个不同的控制变量,但

你可以做的很少,而不用改变它语义学。


Richard



Yes: why? This code isn''t really obfuscated. Ok, the _design_ probably
isn''t all that hot, with the two different control variables, but
there''s little you can do about that without changing the semantics.

Richard


Christopher Benson-Manica写道:
Christopher Benson-Manica wrote:
在一个注意与我关于逻辑XOR的问题有关,我试图想出一个非混淆的方法来压缩下面的代码块
(像往常一样,我没写过):

switch(int_val_1){
案例0:
switch(int_val_2){
case enum_val_1:return(num1 == num2);
case enum_val_2:return (num1< = num2);
case enum_val_3:return(num1> = num2);
默认值:return(true);
}
案例1:
switch(int_val_2){
case enum_val_1:return(num1!= num2);
case enum_val_2:return(num1> num2);
case enum_val_3:return( num1< num2);
默认:return(true);
}
默认:
返回true;
}

任何建议?
On a note related to my question about logical XOR, I''m trying to
think of a non-obfuscated way to condense the following code block
(which, as usual, I did not write):

switch( int_val_1 ) {
case 0:
switch( int_val_2 ) {
case enum_val_1: return( num1 == num2 );
case enum_val_2: return( num1 <= num2 );
case enum_val_3: return( num1 >= num2 );
default: return( true );
}
case 1:
switch( int_val_2 ) {
case enum_val_1: return( num1 != num2 );
case enum_val_2: return( num1 > num2 );
case enum_val_3: return( num1 < num2 );
default: return( true );
}
default:
return true;
}

Any suggestions?




你可以压缩它,但我不认为以下是一个改进

(希望,我没有''' t改变了语义):


int ret;


if(int_val_1!= !! int_val_1)返回true;

switch(int_val_2){

case enum_val_1:ret =(num1 == num2); break;

case enum_val_2:ret =(num1< = num2);中断;

case enum_val_3:ret =(num1> = num2);休息;

默认:返回true;

}

返回ret ^ int_val_1;


更少可读,不太灵活,更容易出错。哇!!如果工作保障是优先考虑的话,我不会毫不犹豫地将这种改进纳入其中。 :-)


-nrk。


-

删除电子邮件的devnull



You can condense it, but I don''t consider the following to be an improvement
(hopefully, I haven''t changed the semantics either):

int ret;

if ( int_val_1 != !!int_val_1 ) return true;
switch ( int_val_2 ) {
case enum_val_1: ret = (num1 == num2); break;
case enum_val_2: ret = (num1 <= num2); break;
case enum_val_3: ret = (num1 >= num2); break;
default: return true;
}
return ret ^ int_val_1;

Less readable, less flexible, more error-prone. Wow!! If job security was a
priority, I wouldn''t hesitate to incorporate this "improvement" :-)

-nrk.

--
Remove devnull for email


Christopher Benson-Manica写道:
Christopher Benson-Manica wrote:

在关于逻辑异或的问题的笔记中,我试图想到一种非混淆的方式来压缩下面的代码块
(像往常一样,我没有写):

switch(int_val_1){
case 0:
switch(int_val_2){
case enum_val_1:return(num1 == num2);
case enum_val_2:return(num1< = num2);
case enum_val_3:return(num1> = num2);
默认:return(true);
}
案例1:
switch(int_val_2){
case enum_val_1:return(num1!= num2);
case enum_val_2:return(num1> num2);
case enum_val_3:return(num1< num2);
默认值:return(true);
}
默认:
返回true;
}

任何建议gestions?

On a note related to my question about logical XOR, I''m trying to
think of a non-obfuscated way to condense the following code block
(which, as usual, I did not write):

switch( int_val_1 ) {
case 0:
switch( int_val_2 ) {
case enum_val_1: return( num1 == num2 );
case enum_val_2: return( num1 <= num2 );
case enum_val_3: return( num1 >= num2 );
default: return( true );
}
case 1:
switch( int_val_2 ) {
case enum_val_1: return( num1 != num2 );
case enum_val_2: return( num1 > num2 );
case enum_val_3: return( num1 < num2 );
default: return( true );
}
default:
return true;
}

Any suggestions?




int result;


switch(int_val_2){

case enum_val_1:result = num1 == num2;

case enum_val_2:result = num1< = num2;

case enum_val_3:result = num1> = num2;

default:return true; / *听起来很荒谬* /

}

if(1 == int_val1)result =!result;

else if(0!= int_val1 )result = true;

/ * else use_result for 0 * /

返回结果;


-

Chuck F(cb********@yahoo.com)(cb********@worldnet.att.net)

可用于咨询/临时嵌入式和系统。

< http://cbfalconer.home.att.net>使用worldnet地址!



int result;

switch (int_val_2) {
case enum_val_1: result = num1 == num2;
case enum_val_2: result = num1 <= num2;
case enum_val_3: result = num1 >= num2;
default: return true; /* sounds ridiculous */
}
if (1 == int_val1) result = !result;
else if (0 != int_val1) result = true;
/* else use_result for 0 */
return result;

--
Chuck F (cb********@yahoo.com) (cb********@worldnet.att.net)
Available for consulting/temporary embedded and systems.
<http://cbfalconer.home.att.net> USE worldnet address!


这篇关于压缩嵌套的switch语句的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆