首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

自增运算符(++),I++与++I的区别-2

自增运算符(++),I++与++I的区别-2

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,这是由编译器决定的。
返回列表