我有一个程序,我正在尝试解码.它被另一种语言翻译成C(这里没有说出其名称),并且我想了解它是如何工作的,我正在慢慢地重写代码并简化它以使用C提供的所有好的逻辑结构.
以下一点点不断出现在我的代码中,其中包含不同的值X
和Y
:
ptr[X]--;
while(ptr[X])
{
ptr[X]--;
ptr += Y;
}
Run Code Online (Sandbox Code Playgroud)
ptr
是类型的char *
,我无法在任何时候对数组的状态做出假设,因为它非常深入地嵌入循环并依赖于输入和输出.我可以成功地"简化"到:
for(ptr[X]--; ptr[X]; ptr[X]--, ptr += Y);
Run Code Online (Sandbox Code Playgroud)
但那太糟糕了.曾经如此稍微好一点:
for(ptr[X]--; ptr[X]; ptr += Y) ptr[X]--;
Run Code Online (Sandbox Code Playgroud)
我想知道是否有人能够更好地简化上述代码,我将不胜感激.这种情况发生在不少于五个地方,并且削弱了我简化和理解流量控制的能力,所以如果任何人都可以提供更简洁/可读的版本,那将是非常棒的.如果任何人都可以提供对该代码的任何奇特的洞察力,那将是非常棒的,虽然我基本上了解它的作用.
洞察特定的代码X
和/或Y
也可以提供帮助.Y
往往介于-2和2之间,X
通常为1,因为它的价值.