C99中的条件返回值

时间:2013-11-21 11:14:47

标签: c optimization standards c99

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

这样的条件的返回值
(1>0)

在c99中始终为1?我在网上找不到答案,我用gcc做的一些测试似乎表明这是真的。但这是langage规范的一部分吗?

确切代码(行进方格算法):

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;

2 个答案:

答案 0 :(得分:4)

  

C99§6.5.8关系运算符

     

每个运算符<(小于),>(大于),<=(小于或等于)和>=(大于或等于)如果指定的关系为真,则产生1,如果为假,则产生0。结果的类型为int

答案 1 :(得分:2)

C99规范草案说:

  

每个运算符<(小于),>(大于),<=(小于或等于),以及   如果指定的关系为真,则>=(大于或等于)将产生1,如果指定的关系为0则为0   是假的。结果的类型为int。