【发布时间】:2010-10-28 15:33:42
【问题描述】:
当我在左侧对布尔表达式进行后增量时,我可以在布尔表达式的两侧使用x吗?
有问题的行是:
if(x-- > 0 && array[x]) { /* … use x … */ }
这是通过标准定义的吗? array[x] 会使用x 的新值还是旧值?
【问题讨论】:
-
记住要保持你的代码干净,以供其他人阅读,即使定义良好,如果以后有人更改或添加到表达式中可能会引入问题。只是我的 2c
-
即使它可以很好地定义,你也不应该使用这种类型的代码。你写的时候可能看懂了,但下一个人可能看不懂。
-
这段代码毕竟还不错。我在 linux 内核中看到过更糟糕的代码:D
-
请指定
x的类型。如果 x 是整数,那么是的。如果它是一个类,取决于是否有人愚蠢到为该类定义 && 运算符(违反所有已知的编码约定)。 -
@knittl “毕竟还不错”-- 实在是太差了。我不会根据 linux 内核来判断我的代码。我们不想编写“还不错”的代码。我们希望编写简单明了、清晰明了的代码。
标签: c++ undefined-behavior post-increment