【发布时间】:2016-03-14 21:20:04
【问题描述】:
这确实是一个 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
这种行为可能吗?当然这不是必需的,但是当我不得不使用数字文字时,我会感到畏缩。而且我不希望运算符重载,因为在其他情况下,我希望递增/递减运算符表现正常......
【问题讨论】:
-
为什么要改变这个?为什么
var + 1不够用? -
@Tim 完全够用了。当赋值无关紧要时,我只是习惯于使用带有局部变量的增量运算符。我试图找出的只是 c++ 中是否存在这种行为。
-
我想知道,为什么不使用
if (++var == SOME_CONST)而不是只使用if (var == SOME_OTHER_CONST)whereSOME_OTHER_CONST=SOME_CONST+1 -
@Aposhian 好吧,我也喜欢避免使用常量。但这真的取决于上下文。
1通常是whole或100%的表示形式,我认为这是适合使用的。如果你能澄清上下文,也许我们可以帮助你想一个替代方案。