.NET基础之:i++和i=i+1和++i的区别

i++ 一定等同于 i=i+1吗?

 

大家都知道,i++通常情况都是等同于i=i+1,在编译时,clr会自动向上转换

比如说    int t =1;    t++;   等同于 t=t+1;  //1 是int,和int型相加,int + int 赋值给int时,编译没有错误
long t= 1;    t++;   等同于 t=t+1;  //1 是int,和long 型相加,由于有int 向上自动转换成 long,int(这时转换成了long) + long 赋值给long时,编译没有错误
   short t=1;    t++;  不等同于 t=t+1; //1 是int,和short类型相加,由于 short 向上自动转换成 int,short(这时转换成了int + int 赋值给short 时,编译肯定会出现错误!
   这里,自动向高级转换时,是t的“值”自动转换了,并非是其类型真的变了!

 

i++ 和 ++i一样的吗?

答案是否定的,在遇到赋值运算时候,i++是先进行赋值,后进行+操作

而++i是先进行加操作,后进行赋值操作

例如:   int count = 5;

            int i = count++;//此时,i=5

            i = count;      //此时 i=6

posted @ 2013-09-10 09:33  神马小猿  阅读(294)  评论(0)    收藏  举报