- UID
- 852722
|
自增运算符(++),I++与++I的区别-1
2. 自减运算符(Decrement Operator)
自减运算符 -- 使操作数的值减 1。同样,-- 的操作数也必须为可变左值。-- 可以置于操作数前面,也可以放在后面。例如:
--N ;
N-- ;
自减运算符和自增运算符非常相似,区别只在于自减运算符使操作数减 1,而自增运算符使操作数增 1。例如:
Int N = 5, Post = 1, Pre = 1;
Pre = --N + Pre; // 运算结束后 Pre 为 5
N = 5;
Post = N-- + Post; // 运算结束后 Post 为 6
3. 优先级
自增运算符和自减运算符的优先级比 + - * / 的优先级要高。因此,N*M++; 表示 N*(M++); 而不是 (N * M)++; 。而且 (N * M)++; 是错误的。因为 ++ 和 -- 的操作数只能是可变左值(Modifiable Lvalue),而 N * M 不是。
注意,不要把优先级和运算顺序混淆了。例如:
Int X = 1, Y = 2, Z;
Z = (X + Y++) * 3; // 运算结束后 Z 为 9,Y 为 3
用数字代替上面的语句得:
Z = (1 + 2) * 3;
优先级表明的是 ++ 作用于 Y,而不是 (X + Y),但它决定不了 Y 的值何时增 1。我们可以肯定的是,在整个语句执行完毕后,Y 的值肯定增加了。但是,我们不知道该语句执行中的什么时候,Y 的值会增 1,这是由编译器决定的。 |
|