1
CvMat* nextimg = 0;
int firstframe;


firstframe=nextimg==0;

如果我不输入“==0”,则返回以下警告:

[Warning] assignment makes integer from pointer without a cast
4

4 回答 4

2
firstframe=nextimg==0;

它正在执行两个操作:

  1. 检查是否nextimg==0
  2. 将布尔结果分配#1firstframe

如果删除==0, 语句会导致指针被分配给整数,因此会发出警告。

于 2013-01-21T15:33:57.247 回答
2

它的缩写相当于

int firstframe;
if (nextimg == 0) {
    firstframe = 1;
}
else {
    firstframe = 0;
}
于 2013-01-21T15:34:27.510 回答
0

firstframe=nextimg==0;- 这里正在检查nextimg它是否等于零。一旦检查完成,返回值将是TRUEor FALSE。该返回值将被分配给firstframe. 没有警告,因为这里分配了条件检查的返回值。

firstframe=nextimg;- 这里的值nextimg被分配给firstframe。分配了 NULL 指针,nextimg因此您会收到该警告。

于 2013-01-21T16:22:39.727 回答
0

它等效于以下代码:

CvMat* nextimg = NULL;
int firstframe;

firstframe = (nextimg == NULL);

的条件nextimg == NULL返回 0 表示假,1 表示真。

于 2013-01-21T17:32:28.893 回答