降低varibale直到满足条件(在循环中无体)

时间:2015-09-03 14:59:19

标签: c while-loop

我正在寻找类似的东西:

int nVal = 130;
while(nVal % 6 != 0)
  nVal--;

在没有身体的while循环中:

int nVal = 130;
while(nVal-- % 6 != 0)

当然,--运算符经常被调用一次。 这里有什么建议,还是我应该选择#1?

3 个答案:

答案 0 :(得分:5)

使用第一种替代方案,因为它更清晰,更正确。将尽可能多的运算符显示在一行中绝不是一个好主意。特别是++--运算符,因为它们包含副作用,因此与其他运算符一起使用是非常危险的。

答案 1 :(得分:2)

你可以这样做:while((nVal-- -1) % 6 != 0) 但是,正如伦丁所说,第一个例子更清晰

答案 2 :(得分:0)

优化后,它应该是asm中的相同代码。 可能最好使用--nVal而不是nVal--但是使用-o3并不重要我认为。