这些天我一直在研究阵列。我以这种方式遇到了一个数组的声明和元素的初始化:
int x[+30];
x[+1]=0;
这让我有些困惑。我记得这个概念,当我们写:
x[n]=0;
然后就意味着:
*(x+n)=0;
然后写x[+1]
意味着*(x++1)
,这似乎无效。请纠正我在理解这个概念时所犯的错误。
答案 0 :(得分:10)
答案 1 :(得分:7)
+
加号可以作为一元运算符。它通常没有效果,但结果是它在数字被解决之前被删除。例如:
int x[+30];
转换为
int x[operator+(30)];
然后变成
int x[30];
因此,这个表达
x[+1] = 0;
只需解析为
x[1] = 0;
它不会解析为*(x ++ 1),特别是因为它在c ++中不是有效的语法。