CvMat* nextimg = 0;
int firstframe;
firstframe=nextimg==0;
如果我不输入“==0”,则返回以下警告:
[Warning] assignment makes integer from pointer without a cast
firstframe=nextimg==0;
它正在执行两个操作:
nextimg==0
#1
给firstframe
如果删除==0
, 语句会导致指针被分配给整数,因此会发出警告。
它的缩写相当于
int firstframe;
if (nextimg == 0) {
firstframe = 1;
}
else {
firstframe = 0;
}
firstframe=nextimg==0;
- 这里正在检查nextimg
它是否等于零。一旦检查完成,返回值将是TRUE
or FALSE
。该返回值将被分配给firstframe
. 没有警告,因为这里分配了条件检查的返回值。
firstframe=nextimg;
- 这里的值nextimg
被分配给firstframe
。分配了 NULL 指针,nextimg
因此您会收到该警告。
它等效于以下代码:
CvMat* nextimg = NULL;
int firstframe;
firstframe = (nextimg == NULL);
的条件nextimg == NULL
返回 0 表示假,1 表示真。