这实际上是一个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
这种行为可能吗?当然这是不重要的,但我只是在我必须使用数字文字时畏缩。而且我不希望运算符重载,因为在其他情况下我希望递增/递减运算符正常运行...
答案 0 :(得分:6)
不,这在语言中不存在。为此使用+ 1
是惯用的。有时,数字文字是合适的:)
答案 1 :(得分:2)
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) {}
强>