所以我在思考这个问题(这是一个家庭作业/考试复习问题):
在不使用前/后增量运算符的情况下记下a[j++] = ++i;
的等效表达式。如果没有提供这样的表达解释原因。
我能够提出以下建议:
a[j] = i+=1;
j+=1;
我想不出一种方法来增加一个[]中的j作为后增量而不是后来使用j+=1;
,我相信这会导致答案没有这样的表达式可以被提供(因为它的两个代码行而不是一行代码,并且只是解释了如果没有后增量运算符,就不能发布增量。
我错过了什么或者我是否正确?我只是想仔细检查一下。提前谢谢。
编辑:感谢@James McNellis,他提供了一种使用的方法
a[(j+=1)-1] = (i+=1);
答案 0 :(得分:11)
这很可怕也很难看,但无论如何它都在这里:
a[(j += 1) - 1] = (i += 1);
答案 1 :(得分:2)
如果您知道i
不会回归到零,那么可以想到一个解决方案:
(a[j] = i += 1) && (j += 1);
答案 2 :(得分:0)
逗号运算符是否计数?
a[j] = i + 1, j += 1, i += 1;
这就像三行独立的代码......但技术上只有一行。 (我知道第二个i + = 1是不必要的,但我是为了保持一致而写的。)
答案 3 :(得分:0)
甚至不使用+ =的等价表达式
(a[j] = i = i + 1, j = j + 1, a[j-1])
和
(i = i + 1, j = j + 1, a[j-1] = i)