繁体   English   中英

C++ - 变量递减

[英]C++ - Variable Decrement

嘿。

我有这个代码,它出于某种神秘的原因设置了一个表格。 尺寸为 6x60。 这意味着SIZEY定义为6,和SIZEX 60。

void set_table(char** table)
{
    int i,j,k=0;

    for(i=0;i<SIZEY;i+=3){
        for(j=0;j<SIZEX;j++){
            switch(k++%5){
                case 0:
                    table[i][j]='|';
                    break;
                case 1:
                    table[i][j]=' ';
                    break;
                case 2:
                    table[i][j]=(char)((((k-2)/50)%10)+48);
                    break;
                case 3:
                    table[i][j]=(char)((((k-3)/5)%10)+48);
                    break;
                case 4:
                    table[i][j]=' ';
                    break;
                default:
                    continue;
            }
        }
    }
}

如您所见,我正在使用 3 个变量进行此操作。 问题是,我可以用 2 个变量,甚至只有 1 个变量来做到这一点吗?

提前致谢。

这里有一个简化:

    switch(k++%5){
        case 0:
            table[i][j]='|';
            break;
        case 1:
        case 4:
            table[i][j]=' ';
            break;
        case 2:
        case 3:
            table[i][j]= '0';
            break;
        default:
            continue;
  }

使用 C++,一种情况可以归入另一种情况,例如上面的情况 1 和 2。

可以简化案例 2 和 3 的表达式。 我将使用案例 2 作为示例:
((((k-2)/50)%10)+48)
用 2 代替 k 产量
((((2-2)/50)%10)+48)
简化:
((((0)/50)%10)+48)
零除以任何东西都是零,再次简化:
(((0)%10)+48)
零模任何东西都是零,因为它涉及除法:
((0)+48)
简化:
(48)
替换为等效字符(因为您的数组是char ):
'0'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM