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いるため、その警告が表示されます。