C warning:statement with no effect [-Wunused-va...
最编程
2024-05-01 18:36:50
...
开源中国社区团队直播首秀,以分享为名讲述开源中国社区背后的故事”
之前做毕设的时候(4、5月份的时候了)初步了解了SLEPc库的使用,准备把一个示例改写为从一个文本文件中获取矩阵的各个元素,然后求特征值。也就是,在文本文件中"所见即所得"的存放一个方阵,用SLEPc求该矩阵的特征值。例如用my.mat存放一个矩阵,内容如下:
zsh >> cat my.mat
1 0 0
0 2 0
0 0 3
SLEPc的MatSetValues函数需要一行行的去赋值。我先写了一个简单的测试函数,用来读取每个元素并输出:
void showMatOfFile(char *filename)
{
int size=getMatSiseOfFile(filename); //矩阵是size*size大小
int i=0,j=0,num,value[3];
FILE *fp=fopen(filename,"r");
printf("hi\n");
for(i;i++;i<size)
{
for(j;j++;j<size)
{
if(fscanf(fp,"%d",&num))
{
printf("%d\n",num);
value[j]=num;
}
}
printf("%d %d %d\n",value[0],value[1],value[2]);
}
}
编译时候出现一个警告: : warning: statement with no effect [-Wunused-value],本来觉得既然不是error何必去追求完美,没想到运行结果让自己摸不着东西。仔细看了一下,发现自己犯了个很傻逼X的错误——把`for(i;i<size;i++)`和`for(j;j<size;j++)`写成了`for(i;i++;i<size)`和`for(j;j++;j<size)`。更傻X的是自己把这段改写到目标源代码时候由犯了这个错误,还为这个错误再次花了半个多小时。。。
写于2013-4-18。
上一篇: 分享我在阅读源代码时学到的一个小窍门。