关于自增自减运算符的问题

自增自减运算符只能对变量生效,对常量无法使用。
那么即是说:
int a=1;
a++;
这样是可行的,而1++;是false的。
那么有个疑问
int[] a=new int[100];
a[3]++;
这样确实可行的,是为什么呢?
a[3]不是一个常量0吗?

阅读 3.6k
3 个回答

a[3]的值是0,但a[3]本身是个变量

a[3]=0
变量=值

说实话,建议少用++之类的运算符。
比如:

(++i)+(i++)+(i++)+(i++)

同样的代码用不同的语言,不同的编译环境,不同的运行环境,可能会有不一样的结果。
(编译器优化效果的不同,CPU架构的不同等等原因)

a++写成a = a + 1,不就清晰多了?
1++就是1 = 1 + 1,发现错误了没?
a[3] = a[3] + 1,没问题吧?

新手上路,请多包涵

我就是在说你"痛恨"的东西啊。。。
index++;
这哪儿看不懂了

if (index++ < 128) {......}  // 用++运算符的写法1
if (index < 128){  //不用++的写法2
    index = index + 1;
    ......
}

哪一个更简洁自行判断。
当然前面说了
i++ + ++i + i++;
这种东西本身就是UB,早就该拖出去打死了。。。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题