【问题标题】:Condition return value in C99C99中的条件返回值
【发布时间】:2013-11-21 11:14:47
【问题描述】:

我正在尝试优化一些代码,我想知道返回值是否像

(1>0)

在 c99 中总是 1 吗?我在网上找不到答案,我用 gcc 进行的一些测试似乎表明这是真的。但这是语言规范的一部分吗?

确切的代码(行军广场算法):

to_run->data[(y / 2) * (my_grid->width / 2) + (x / 2)] =
    (up[0] > level) +
    (up[1] > level) << 1 +
    (down[0] > level) << 2 +
    (down[1] > level) << 3;

【问题讨论】:

    标签: c optimization standards c99


    【解决方案1】:

    是的。

    C99 §6.5.8 关系运算符

    每个运算符&lt;(小于)、&gt;(大于)、&lt;=(小于或等于)和&gt;=(大于或等于)应产生1如果指定的关系为真,0 如果为假。结果类型为int

    【讨论】:

      【解决方案2】:

      是的。

      C99 规范草案说:

      每个运算符&lt;(小于)、&gt;(大于)、&lt;=(小于或等于)和 &gt;=(大于或等于)如果指定的关系为真,则为 1,如果为真,则为 0 是假的。结果的类型为 int。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-04
        • 1970-01-01
        • 2022-12-11
        • 2019-02-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多