在等式的右边使用mod和等式

时间:2018-02-03 14:34:36

标签: c++

我无法理解这段代码,它为vals [i]设置了值。

for(int i = 0; i < 100; i++)
    vals[i] = (i%4==1)*255; 

非常感谢任何理解这一点的帮助!

1 个答案:

答案 0 :(得分:0)

感谢那些发表评论的人。

我总结了这段代码

(i % 4 == 1) * 255
如果不使用关键字,

几乎就是内联。

以下是我的测试说明,以防有可能帮助其他人。

int main()
{
    int size = 50;
    for (int i = 0; i < size; i++)
    {
        int val = i % 4 == 1 * 255;
        printf("%d) %d\n", i, val);
        // Output: Zero for every index
    }
    printf("\n--------------------\n");     // just for some spacing for readability
    for (int i = 0; i < size; i++)
    {
        int val = (i % 4 == 1) * 255;       
        printf("%d) %d\n", i, val);
        // Output...
        // 1) 255
        // 5) 255
        // 9) 255
        //...
    }
    printf("\n--------------------\n");     // just for some spacing for readability
    // This is a bit easier for me to understand, and it gives the same results as above
    for (int i = 0; i < size; i++)
    {
        int val = 0;
        if (i % 4 == 1)
            val = 255;
        printf("%d) %d\n", i, val);
        // Output...
        // 1) 255
        // 5) 255
        // 9) 255
        //...
    }
    return 0;
}