[英]How much byte a long variable takes if int value is stored in it?
如果我给出的值大于int range,则我将一个整数值存储在long变量ut中,这就是说“ int类型的字面量大于range”。
整数的范围是2147483648至2147483647
所以当我存储
long l=2147483647;
那么它运行良好
但是当我存储时
long l=2147483648;
那么它给出了编译时错误,因为“ int类型的字面量大于范围”
所以我想知道如果我要存储long l=2147483647;
即在long变量中int range的值,然后使用32位还是64位存储它。
另外,如果使用64位,那么为什么它会给出long l=2147483648;
错误long l=2147483648;
您似乎认为,当long
存储int
范围内的值时,它将使用32位存储它。 这不是真的。
Java语言规范第4.2节原始类型和值
整数类型为
byte
,short
,int
和long
,其值分别为8位,16位,32位和64位带符号的二进制补码整数。
您收到编译器错误,因为在该上下文中不能使用整数文字2147483648
。 该错误与long
的大小无关。
第3.10节
从0到2147483647的所有十进制文字都可能出现在可能出现int文字的任何地方。 十进制文字2147483648只能显示为一元减运算符
-
(§15.15.4)的操作数。如果十进制文字2147483648除了作为一元减运算符的操作数之外的其他任何地方出现,则是编译时错误; 或如果int类型的十进制文字大于2147483648
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.