从SO中的这篇文章来看,很明显C支持负指数.
为什么在程序中支持这种潜在的内存违规?
编译器不应该至少抛出一个负指数警告吗?(我正在使用GCC)
或者这个计算是在运行时完成的?
编辑1: 任何人都可以暗示它的用途吗?
编辑2: 用于3.)使用
[]
数组/指针中的循环计数器表示指数的运行时计算.
我正在阅读字节流试用,并注意到以下声明
请注意,read()返回一个int值.如果输入是字节流,为什么read()不返回字节值?使用int作为返回类型允许read()使用-1来表示它已到达流的末尾.
使用a的给定原因 int
是它们可以通过-1识别EOF.(似乎很浅)
所以下一个更大的原始类型是short
,它也支持-1所以为什么不使用它?
从我收集的内容:(使用的理由int
)
我的理由是否正确?我错过了什么(比如纠错)?
我有以下代码:
String []d=new String[]{"y","z"};
Object []ab=d;
d=(String[]) ab;
System.out.println(d[0]);
System.out.println(ab[0]);
Run Code Online (Sandbox Code Playgroud)
按预期返回y两次
但是下面的代码抛出一个java.lang.ClassCastException
(这里fileList
是一个ArrayList<File>
对象)
File[] loadedFiles=new File[fileList.size()];
Object[] toArray = fileList.toArray();
loadedFiles=(File[]) toArray;
System.out.println(toArray[0]);
System.out.println(loadedFiles[0]);
Run Code Online (Sandbox Code Playgroud)
虽然以下不会抛出任何东西:
loadedFiles=fileList.toArray(new File[0]);
Run Code Online (Sandbox Code Playgroud)
Javadoc 1.5说(约toArray()
):
返回的数组将是"安全的",因为此集合不会保留对它的引用.(换句话说,即使此集合由数组支持,此方法也必须分配新数组).因此调用者可以自由修改返回的数组.
那么为什么我不能通过强制转换来修改数组类型呢?
谢谢!
我最近正在阅读Robert Sedgewick 所着的名为Algorithms的书.我在阅读"算法分析"时遇到了一段代码.代码如下:
public static int count(int a[]) {
int N = a.length;
int cnt = 0;
for (int i = 0; i < N; i++) {
for (int j = i + 1; j < N; j++) {
for (int k = j + 1; k < N; k++) {
if (a[i] + a[j] + a[k] == 0) { //here
cnt++;
}
}
}
}
return cnt
}
Run Code Online (Sandbox Code Playgroud)
我想知道的是-loop中if
-statement for
执行了多少次.这本书提供的答案是N(N-1)(N-2)/6
.但我不知道为什么,任何人都可以解释.