我正在尝试优化一些代码,我想知道是否像
这样的条件的返回值(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;
答案 0 :(得分:4)
是
C99§6.5.8关系运算符
每个运算符
<
(小于),>
(大于),<=
(小于或等于)和>=
(大于或等于)如果指定的关系为真,则产生1
,如果为假,则产生0
。结果的类型为int
答案 1 :(得分:2)
是
C99规范草案说:
每个运算符
<
(小于),>
(大于),<=
(小于或等于),以及 如果指定的关系为真,则>=
(大于或等于)将产生1,如果指定的关系为0则为0 是假的。结果的类型为int。