[j ++] = ++ i的等价表达式,不使用前置或后置增量运算符

时间:2011-02-23 03:50:24

标签: c post-increment pre-increment

所以我在思考这个问题(这是一个家庭作业/考试复习问题):

在不使用前/后增量运算符的情况下记下a[j++] = ++i;的等效表达式。如果没有提供这样的表达解释原因。

我能够提出以下建议:

a[j] = i+=1;
j+=1;

我想不出一种方法来增加一个[]中的j作为后增量而不是后来使用j+=1;,我相信这会导致答案没有这样的表达式可以被提供(因为它的两个代码行而不是一行代码,并且只是解释了如果没有后增量运算符,就不能发布增量。

我错过了什么或者我是否正确?我只是想仔细检查一下。提前谢谢。

编辑:感谢@James McNellis,他提供了一种使用的方法 a[(j+=1)-1] = (i+=1);

4 个答案:

答案 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)