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