CvMat* nextimg = 0;
int firstframe;
firstframe=nextimg==0;
「==0」を入れないと、次の警告が返されます。
[Warning] assignment makes integer from pointer without a cast
firstframe=nextimg==0;
次の 2 つの操作を実行しています。
nextimg==0
#1
ブール値の結果をto に割り当てますfirstframe
, ステートメントを削除する==0
と、ポインターが整数に割り当てられるため、警告が発生します。
その短縮された同等物
int firstframe;
if (nextimg == 0) {
firstframe = 1;
}
else {
firstframe = 0;
}
これは次のコードと同等です。
CvMat* nextimg = NULL;
int firstframe;
firstframe = (nextimg == NULL);
の条件はnextimg == NULL
、falseの場合は0を返し、trueの場合は1を返します。
firstframe=nextimg==0;
- ここでnextimg
は、ゼロに等しいかどうかのチェックが行われています。チェックが完了すると、戻り値はTRUE
またはになりますFALSE
。その戻り値は に割り当てられfirstframe
ます。条件チェックの戻り値がここに代入されているため、警告はありません。
firstframe=nextimg;
- ここで の値nextimg
が に割り当てられfirstframe
ます。NULL ポインターが割り当てられてnextimg
いるため、その警告が表示されます。