我正在阅读一些Java谜题并找到了这个
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432l);
}
}
它不应该打印66666,而是打印17777.有人可以解释一下吗?
答案 0 :(得分:2)
public class Elementary {
public static void main(String[] args) {
System.out.println(12345 + 5432l);
}
}
如果你仔细观察它的角色'l'(5432 l )而不是'1'
这意味着它是'long'类型值。
如果没有后缀,并且它是整数类型(例如5623),则假定它是int。如果它不是整数类型(例如3.14159),则假定它是双精度。
有特定的后缀为long(例如39832L),float(例如2.4f)和double(例如-7.832d)。 除了这些,我们需要输出数字。
如果您添加这两个数字(12345 + 5432),现在问题就出现了(17777)
答案 1 :(得分:1)
以下是答案的说明: -
1.如果您打印Button1.setTitle(data[0], for: .normal)
Button2.setTitle(data[1], for: .normal)
Button3.setTitle(data[2], for: .normal)
。
2.在您的情况下, 12345 + 5432 12345 +54321 = 66666
= 12345 +5432(这个数字是长的,前缀为l)l
= 12345(int)+5432(long)
=(长)12345 +5432
= 17777
更多说明请找到以下代码
l
答案 2 :(得分:0)
你现在的号码被称为char l。你必须写1号。 你看到差异l和1 </ p>
答案 3 :(得分:0)
我认为,因为5432l中的最后一个不是数字&#39; 1&#39;但字母表&#39; l&#39;因此它只是被编译器跳过,导致添加12345和5432
答案 4 :(得分:0)
我同意上层答案。但也值得一提的是这个非常常见的错误,以及为什么以这种方式对代码编写表示高度赞赏:
System.out.println(12345 + 5432L);
L - 大写,更直观地显示变量的类型