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


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

c C++ JavaScript

地球連邦軍 9 years, 3 months ago

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


 a[3]=0
变量=值

爱丽丝风行者 answered 9 years, 3 months ago

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


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

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

Fwcke answered 9 years, 3 months ago

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


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

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

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

露米娅斯卡雷特 answered 9 years, 3 months ago

Your Answer