是否有没有赋值的增量运算符?

时间:2016-03-14 21:20:04

标签: c++ increment decrement

这实际上是一个c ++语言问题。我很想知道是否存在任何此类运算符,或者正在开发或已弃用。

我想知道是否有办法使用增量运算符而不更改其值

我知道++var相当于var += 1至分配,表达式将评估为var + 1(如果它是前缀)。

这可能是轻浮的,但是当我有条件时

if (var + 1 == SOME_CONST) {}

我想写更像

if (++var == SOME_CONST) {} //not what I want

但不改变var:

的值
int varDummy = var;
if (++varDummy == SOME_CONST) {}

// Now I want (varDummy == var) to evaluate true, so I wouldn't need varDummy

这种行为可能吗?当然这是不重要的,但我只是在我必须使用数字文字时畏缩。而且我不希望运算符重载,因为在其他情况下我希望递增/递减运算符正常运行...

5 个答案:

答案 0 :(得分:6)

不,这在语言中不存在。为此使用+ 1是惯用的。有时,数字文字是合适的:)

答案 1 :(得分:2)

如果你愿意的话,你可以这样做。 e.g。

inline int inc(int i) { return i+1; }

如果您重视简洁,请使用简洁的函数名称,如果您重视清晰度,请使用像one_more_than这样的函数。

答案 2 :(得分:1)

如果您不想使用数字文字,可以定义“{1”,就像定义SOME_CONST一样:

#define ADDITIONAL 1

// somewhere else...
if (var + ADDITIONAL == SOME_CONST) {}

或者,甚至更好:

#define THE_REAL_CONST_YOU_NEED (SOME_CONST - 1)

答案 3 :(得分:1)

如果你绝对不喜欢+1,你可以定义一个增量函数:

T inc(T var) {
    return var++;
}

(我使用T作为定义了增量运算符的类型的占位符。我假设var不一定是int

然后:

if (inc(var) == SOME_CONST) {}

答案 4 :(得分:0)

看起来不错:

<强> if ( (++var)-- == SOME_CONST) {}