首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

a=a+1;的简单有关问题

2012-01-05 
aa+1的简单问题!问题://////////////short a1;aa+1;这个不可以编译通过很好理解,1是int型,a+1的运算结

a=a+1;的简单问题!
问题:

//////////////
short a=1;
a=a+1;

这个不可以编译通过很好理解,1是int型,a+1的运算结果是int型,不可以强制转换成short型。
///////////////


再看:
///////////////////
short a=1;
a+=1;
这个可以编译通过,为什么?到底a+=1是怎么进行运算的?

/////////////////////
在群里一个刚学C#的人问的,我解决不了。。。5555555555.....

[解决办法]
很简单...+=中的+是根据左操作数类型推断结果类型的,它会自动将默认的int型1转换为short型1...

short a=1;
a+=32767;//编译可以通过...

short a=1;
a+=32768;//编译就不能通过了,而且你注意看错误信息,常量值“327678”无法转换为“short”...

你可以看一下IL代码...

short a=1;
a=(short)(a+1);



short a=1;
a+=1;

是完全一样的...也就是说+=会自动转换类型,但是这种转换只能是可以隐式转换的类型...

热点排行