我在工作区中有两个元素rr
和ll
(两个矩阵)
我做
Warning message:
In cbind(ll, rr) :
number of rows of result is not a multiple of vector length (arg 2)
dim(ll)
# [1] 3008 11
length(rr)
#[1] 3008
Run Code Online (Sandbox Code Playgroud)
怎么可能?
for ( i= 0; i < sizeof(r)/sizeof(r[0]); ++i ){
r[i]= 0;
}
Run Code Online (Sandbox Code Playgroud)
所以这是for循环我遇到了麻烦,我怎么能重写它所以我没有得到警告:
comparison between signed and unsigned integer expressions [-Wsign-compare]
Run Code Online (Sandbox Code Playgroud) 你好:这段代码被编译:
public static void main( String[] args ) {
var list = new ArrayList<>();
list.add("hello world");
list.add(1);
list.add(1.01);
System.out.println(list);
System.out.println( "Hello World!" );
}
Run Code Online (Sandbox Code Playgroud)
但存在运行时问题。局部list
变量属于ArrayList
但不是任何ArrayList<xxx>
泛型类型。为什么java会让这种代码通过编译呢?
如果我将第一行更改为:
ArrayList list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
然后javac报未检查/不安全操作警告,建议使用-Xlint:unchecked
并重新编译。为什么var
这里不触发任何编译错误/警告?
谢谢!
所以我继承了用Fortran编写的这个(不是真正遗留的)项目.为了使它成为线程安全的,我必须将一个void*
指针(称为user_data
,你可能知道模式)传递给所有fortran例程,以便它们可以将它传递回回调(因此全局状态现在已正确分配堆).
令我真诚的惊讶的是,这导致了在最奇怪的地方完全崩溃和断块.毕竟,我只为所有函数添加了一个未更改的参数?
令我完全恐惧(我不是Fortran程序员,只是一个有解决问题诀窍的普通黑客),我了解到Fortran编译器只是忽略了第72列之外的所有内容,可能是因为列很昂贵或者其他东西,甚至没有发出警告(除了某些"类型错误"(Fortran中的haha类型 - 纪律,这是一个笑话)报道的情况).
直到今天,我一直在代码中找到遭受这种意外的意外后果的地方.
有没有可以在这种错误中可靠地检查Fortran代码库的工具?
并且,作为John Oliver的奖金问题:为什么72列限制仍然是一个问题?
这是我的Java代码的一部分,IDE是Eclipse.'lines'是一个字符串数组.
//build anchor inner text
int Count = Lines.length;
String Text = ""; //<----------Eclipse shows warning here
for (int Index=0; Index<Count; Index++) {
Text += Lines[Index];
if (Index<Count-1)
Text += "<br/>";
}
Run Code Online (Sandbox Code Playgroud)
'Text'变量在'for'循环之外声明,但是,它在内部使用.Eclispe向我显示了这个警告:" 变量'Text'的声明行中没有使用局部变量Text的值 ".
怎么会这样?它在'for'循环中使用.