第一个赋值没有报错 是因为你定义的是short类型 值域范围是-128~127 1在这个范围内,所以编译通过,第二个是因为你定义的d是一个int类型,当你给d赋值为4的时候,这个4属于int类型,当你使用d赋值给short类型的e的时候,就如同你把一个大西瓜丢进一个茶碗一样,编译器只认识4是一个int数据类型,将一个大数据类型装进小的数据类型,会发生溢出,虽然4也符合-128~127,但是此时4属于int类型
[quote=引用 7 楼 q54244125 的回复:] [quote=引用 4 楼 yuxiangaaaaa 的回复:] short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 另外short a=1;不报错是因为定义的a就是short类型,不是说先定义了“1”是int,然后把1这个int类型的值赋给short了 而是这里的1本身就是short.定义成什么类型就是什么类型,short是16位的二进制,int是32位的二进制,short可以转int,只需要把short前面补16个零就行了
[quote=引用 4 楼 yuxiangaaaaa 的回复:] short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 另外short a=1;不报错是因为定义的a就是short类型,不是说先定义了“1”是int,然后把1这个int类型的值赋给short了 而是这里的1本身就是short.定义成什么类型就是什么类型,short是16位的二进制,int是32位的二进制,short可以转int,只需要把short前面补16个零就行了
short的取值范围为-32768~32767,占用2个字节(-2的15次方到2的15次方-1) int的取值范围为(-2147483648~2147483647),占用4个字节(-2的31次方到2的31次方-1) 另外short a=1;不报错是因为定义的a就是short类型,不是说先定义了“1”是int,然后把1这个int类型的值赋给short了 而是这里的1本身就是short.定义成什么类型就是什么类型,short是16位的二进制,int是32位的二进制,short可以转int,只需要把short前面补16个零就行了
67,512
社区成员
225,880
社区内容
加载中
试试用AI创作助手写篇文章吧