繁体   English   中英

如果将int值存储在其中,则长变量占用多少字节?

[英]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节原始类型和值

整数类型为byteshortintlong ,其值分别为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM