【问题标题】:What are the ways to skip the use of && in for condition statement?有哪些方法可以跳过使用 && 的条件语句?
【发布时间】:2012-04-07 06:45:13
【问题描述】:

我的书中有一个练习,要求我编写一个相当于:

for(i=0;(i<4) && (i<5);i++)

但不使用&amp;&amp;|| 运算符。

我想出了这样的解决方案:

for (i=0;;i++)
        if((i<4))
            if((i<5))
                printf("Works!!!\n");
            else
                break;
        else
            break;

它有效。由于我是C初学者,我想知道是否有比这更好的解决方案。

提前致谢。

【问题讨论】:

  • 你错过了一个简单的:for(i=0; i&lt;4; i++)

标签: c logical-operators


【解决方案1】:

您的&amp;&amp; 结合了两个条件,其中一个条件在逻辑上相对于另一个条件较弱。如果一个整数小于 4,它必然小于 5。因此,(i&lt;4) &amp;&amp; (i&lt;5) 可以直接替换为(i&lt;4)

【讨论】:

    【解决方案2】:

    关于风格的说明:最好总是使用带有嵌套 if 的大括号,至少对于外部的,尤其是在缺少 else 的情况下。这不会做你打算做的事情:

    if (Cond1)
        if (Cond2)
            DoSomething;
    else
        DoSomethingElse;
    

    编译器认为 else 属于 Cond2。这不会留下任何误解的余地:

    if (Cond1)
    {
        if (Cond2)
        {
            DoSomething;
        }
    }
    else
    {
        DoSomethingElse;
    }
    

    【讨论】:

    • 即使你的编辑器(如果它有任何好处,比如 Vim)也会发现这是错误的;当您突出显示块并重新缩进时,它将修复缩进以向您显示真正的含义。
    • 我不同意为简单的代码添加所有这些垂直混乱。 if (cond) { if (cond2) DoSomething; } 其他 { DoSomethingElse; }。如果一个子句需要支撑,通常最好也支撑另一个子句。如果它们都是单一表达的工作,那么就不要考虑支撑了。
    猜你喜欢
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多