我正在尝试编写以下代码.但它给了我错误,请帮助我.
int six=06;
int seven=07;
int abc=018;
int nine=011;
System.out.println("Octal 011 ="+nine);
System.out.println("octal O18 =" + abc);
Run Code Online (Sandbox Code Playgroud)
为什么我不能给018和019变量.我可以给变量赋值020和021.为什么会这样?这背后的原因是什么,请告诉我.
我得到了以下错误
integer number too large: 018
int eight=018;
Run Code Online (Sandbox Code Playgroud) 我遇到了这个Java程序,它以意想不到的方式运行.以下程序计算int数组中元素对之间的差异.
import java.util.*;
public class SetTest
{
public static void main(String[] args)
{
int vals[] = {786,678,567,456,
345,234,123,012};
Set<Integer> diffs = new HashSet<Integer>();
for(int i=0; i < vals.length ; i++)
for(int j = i; j < vals.length; j++)
diffs.add(vals[i] - vals[j]);
System.out.print(diffs.size());
}
}
Run Code Online (Sandbox Code Playgroud)
如果我们分析它似乎设置大小应该是8,这是数组的大小.但是,如果你运行这个程序,它打印14.发生了什么?任何的想法?
先感谢您.
答:这种奇怪的行为发生是因为如果我们将数组改为12则数组中的012变为八进制,然后按预期打印8.
课程:永远不要用零填充整数文字.
因此,为了打印从1到10的数字,我们编写一个简单的for循环,从i = 1到i <= 10,并期望看到数字1 2 3 .. 10打印出来.我很好奇如果我为这样的条件添加额外的零会发生什么:
for(int i=000000; i<000010; i++){
System.out.println(i)
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出是
0
1
2
3
4
5
6
7
Run Code Online (Sandbox Code Playgroud)
为什么要打印这些数字?
考虑下面的C代码:
#include <stdio.h>
int main()
{
int i = 012;
printf("%d", i);
}
Run Code Online (Sandbox Code Playgroud)
在O/P上,值i打印为10.我知道(012)8 =(10)10.但我对C如何存储int变量值感到困惑.任何人都可以向我解释一下吗?