A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 649678291 中级黑马   /  2015-5-10 10:13  /  923 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

自增和自减的作用是使变量的值加 1或者减 1,
例如:++ i,—— i (在使用i之前,使 i 的值加(减)1)
          i ++,i ——(在使用i之后,使 i 的值加(减)1)
粗略的看,++ i 和 i ++的作用相当于 i =  i + 1.但是++ i 和  i ++ 的不同之处在于++ i 是先执行  i = i +1 之后,在使用 i 的值;而 i ++ 是先使用  i 的值后再执行  i  = i +1。
如果 i 的原值等于 3 ,是分析下面的赋值语句;
       j = ++ i ;  ( i 的值先变成 4 ,在赋值给 j,j 的值为 4)
       j =  i++;     (先将 i 的值 3赋值给 j ,j 的值为 3 ,然后 i 的值变为 4 )
注意![/color自增和自减运算只能用于变量,而不能用于表达式或者常量,如 6++ 或者(a+b)++ 都是不合法的。因为 5是常量,常量的值不能不能改变。(a+b)++ 也是不能实现的,假如 a + b 的值为 5,那么自增后得到的 6  放在什么地方呢?无变量可供存放。
      使用 + +和——运算符时,常会出现一些人们常常想不到的副作用,用MJ老师的话来说,后果很严重!如 i +++ j ,是理解 (i++)+ j呢,还是 i +(++ j)呢为了避免多义性,应当采用不致引起歧义的写法,可以加一些括号,如( i++)+ j。
再例如:
#include <stdio.h>
int main()
{
        int  a, b, c;
         a = 5; //此时 a的值是5
        b = a++; //这一步,a一开始为5, 先返回a的值给b,b就为5了,然后 a执行++,a就为6了。

        printf("a = %d, b = %d \n", a, b); //输出 a = 6, b = 5

        c = ++a; //这一步, a先执行++,a的值就为7了,然后再将a的值返回给c,c也等于7了。

        printf ("a = %d, c = %d \n", a, c); //输出 a = 7, c = 7

return 0;

}

1 个回复

倒序浏览
额   不知道怎么加着重色,加完之后变成这样子了……………………
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马