黑马程序员技术交流社区

标题: 就为这个问题 差点出人命??? [打印本页]

作者: 殘遛の丶狳味    时间: 2013-8-4 12:50
标题: 就为这个问题 差点出人命???
short s=1;s=s+1;有错吗?
short s=1;s+=1;有错吗?
我咋觉得都对呢?
作者: 念念念念_、    时间: 2013-8-4 13:11
short s = 1; s =Convert.ToInt16( s + 1);
作者: sxdxgzr@126.com    时间: 2013-8-4 13:24
short s=1:short 短整型 2个字节,表达式中"1"为int类型,长度4个字节。会发生类型转换,占内存大的向占内存小的转换语法上需要强制转换如short s=(short)1:但这样可能会丢失部分造成错误,建议楼主看哈类型转换相关的内容。
作者: 聂广强    时间: 2013-8-4 17:58

hort i=i+1;右边是一个short类型的加上一个整型的1,结果右边的类型整体从short就变成了 int 类型 这个属于隐式转换数据类型,然而左边的变量 i 还是
short类型 如果就这样为i赋值,则在编译的时候会报错。如实要正确的编译成功只需在右侧进行short类型的强制转换 即可。
short i+=1;是先将“+=”右边的类型强制转换成左边的short类型后在进行运算,所以不需要强制转换,这就是二者之间的区别




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2