这两种写法有什么不同?
short s1=1;
1. s1=s1+1;
2. s1+=1;
看别人说的第1种写法有错,第二种正确。
两者本质区别在哪里?
[解决办法]
恩,恩
[解决办法]
第一种如楼上所说从int到short需要类型转换,存在越界风险。报不报错可能是编译器类型和风险等级决定的
第二种是+=操作符,可能这个1在编译的时候可能会被当作short类型作为入参,或者在+=函数体里面替你做了安全的类型转换
第二种不存在变量拷贝,效率优于第一种
[解决办法]
原因是 微软规定的
http://msdn.microsoft.com/zh-cn/library/ybs77ex4.aspx
以下赋值语句将产生一个编译错误,原因是赋值运算符右侧的算术表达式在默认情况下的计算结果为 int 类型。
short z = x + y; // Error: no conversion from int to short
若要解决此问题,请使用强制转换:
short z = ( short )(x + y); // OK: explicit conversion
说说我的个人看法:
经常有看到会讨论编译时是怎么样,运行时是怎么样
C#是一种强类型语言,编译前会检查类型是否一致
第一种,就是就编译器(VS包括编译器)干的事情,判断是否类型一致
其实第二种也是可能出错的,只是在编译时,由于语法原因,所以编译过去了
但如果
short s = 32767;
s += 32767;//s的值是-2
从计数机角度不可以说错啦,但从人的预想来说~是错的~
[解决办法]