【发布时间】:2018-11-29 18:23:59
【问题描述】:
经过研究,我读到增量运算符要求操作数具有可修改的数据对象:https://en.wikipedia.org/wiki/Increment_and_decrement_operators。
据此我猜它会给出编译错误,因为(a+b) 是一个临时整数,因此不可修改。
这种理解正确吗?这是我第一次尝试研究问题,所以如果有我应该寻找的东西,请提出建议。
【问题讨论】:
-
这在研究方面还不错。你在正确的轨道上。
-
你希望表达式做什么?
-
根据 C11 标准 6.5.3.1:前缀递增或递减运算符的操作数应具有原子、合格或不合格的实数或指针类型,并且应为可修改的左值
-
您希望 1 如何在 a 和 b 之间分配? “数组索引应该从 0 还是 1 开始?我对 0.5 的妥协被拒绝了,我认为没有适当的考虑。” — Stan Kelly-Bootle
-
我认为一个后续问题是,当
c = a + b + 1使您的意图更清晰并且打字时间也更短时,您为什么要这样做。递增/递减运算符做两件事 1. 它们和它们的参数形成一个表达式(可以使用,例如在 for 循环中),2. 它们修改参数。在您的示例中,您使用的是属性 1. 但不是属性 2.,因为您丢弃了修改后的参数。如果您不需要属性 2. 并且只想要表达式,那么您可以只写一个表达式,例如x+1 而不是 x++。