void SetDifference(Set *s1, const Set *s2, const Set *s3)
{
    if (s2->set[i] = s3->set[j])
    // ホニャララ
}

==とするべきところを上のように間違えててもコンパイルエラーになりませんでした。
s2はconstで修飾されているけど正常なんですか?
コンパイラはVC2003です。