压缩嵌套的switch语句 [英] Condensing nested switch statements
问题描述
在与我关于逻辑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屋!