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

Is there an increment operator without assignment?

本文关键字:运算符 有没有 赋值 是否      更新时间:2023-10-16

这实际上是一个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

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

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

如果你

愿意,你可以这样做。 例如

inline int inc(int i) { return i+1; }
如果您重视简洁性,请使用简洁的

函数名称,例如 Inc,如果您重视清晰度,请使用类似 one_more_than 的名称。

如果您不想使用数字文字,则可以像定义SOME_CONST一样定义"1":

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

或者,甚至更好:

#define THE_REAL_CONST_YOU_NEED (SOME_CONST - 1)

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

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

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

然后:

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

看起来不错:

if ( (++var)-- == SOME_CONST) {}

相关文章: