我有一个正在尝试解码的程序。它是从另一种语言(这里没有说出它的名字)翻译成 C 语言的,因为我想了解它是如何工作的,所以我正在慢慢地重写代码并简化它以使用 C 必须提供的所有良好的逻辑结构。
以下一点点在我的代码中不断弹出,具有不同的值X
和Y
:
ptr[X]--;
while(ptr[X])
{
ptr[X]--;
ptr += Y;
}
ptr
是 type char *
,我不能在任何时候对数组的状态做出假设,因为它非常深入地嵌入在循环中并且依赖于输入和输出。我可以成功地将其“简化”为:
for(ptr[X]--; ptr[X]; ptr[X]--, ptr += Y);
但这太可怕了。稍微好一点的是:
for(ptr[X]--; ptr[X]; ptr += Y) ptr[X]--;
我想知道是否有人可以更好地简化上述代码,我将不胜感激。这发生在不少于五个地方,并且削弱了我简化和理解流控制的能力,所以如果有人能提供更简洁/可读的版本,那就太棒了。如果任何人都可以提供对该代码的任何花哨的洞察力,那也太棒了,尽管我基本上了解它的作用。
深入了解特定代码X
和/或Y
也可以提供帮助。Y
往往介于 -2 和 2 之间,并且X
通常为 1,因为它的价值。