当前位置: 首页 > 面试题库 >

为什么是“ int i = 2147483647 +1;” 可以,但是“字节b = 127 + 1;” 不可以编译吗?

罗渝
2023-03-14
问题内容

为什么int i = 2147483647 + 1;可以,但byte b = 127 + 1;不能编译?


问题答案:

常量被评估为int,因此会2147483647 + 1溢出并为您提供一个新的int,该int可分配给int,同时127 + 1也被评估为intequals 128,而不能分配给byte



 类似资料:
  • 问题内容: 如果我有一个字节变量: 为什么以下工作: …但这不是吗? 编译器第一理解为第二吗? [编辑] 我知道演员,但我想提请您注意 我认为它们是平等的,那么为什么编译器会有所不同呢?之间有什么区别 问题答案: 因为是的等效项,而的类型被提升为(JLS§5.6.2二进制数值提升),因此,如果不进行显式转换,则不能将其结果分配给它。 根据JLS,§15.26.2复合赋值运算符: 形式为E1 op

  • 问题内容: 我正在写一个简单的命令行游戏。我有很多功能,所有功能都将在这里发布。 问题:程序可以编译,但是当被调用并选择了一个数字时,我得到了: 这是我的代码: 有人可以在这里指出正确的方向吗?我究竟做错了什么?我感觉这是类“玩家”和在“游戏”类中创建的对象的类问题。 问题答案: 你得到一个因为是。您在这里做了什么: 是声明 局部 变量。静态类变量保持不变,因此保持不变。 这称为阴影(JLS,第6

  • 为什么第一个和第二个写工作,但不是最后一个?有没有办法我可以允许所有3个,并检测它是1,(int)1还是i传入?为什么只允许一个,而允许最后一个?第二个被允许,但不是最后一个,真的让我大吃一惊。 演示显示编译错误

  • 本文向大家介绍一个参数既可以是const还可以是volatile吗?解释为什么。相关面试题,主要包含被问及一个参数既可以是const还可以是volatile吗?解释为什么。时的应答技巧和注意事项,需要的朋友参考一下 • 是的。一个例子是只读的状态寄存器。它是volatile因为它可能被意想不到地改变。它是const因为程序不应该试图去修改它。