次のコードを書きました。
int main(){
int i=-1,j=-1,k=0,l=2,m;
m = i++ && j++ && k++ || l++;
printf("%d %d %d %d %d",i,j,k,l,m);
i=-1,j=-1,k=0,l=2,m;
m = ++i && ++j && ++k || ++l;
printf("\n%d %d %d %d %d",i,j,k,l,m);
return(0);
}
そして、私は次の結果を得ました:
0 0 1 3 1
0 -1 0 3 1
私が知っているように、後置演算子と前置演算子はセミコロンの後に解決されます。元の値が式で使用され、変数が解決されます。その場合
i++ && j++
に等しい必要があります
++i && ++j
両方とも同等である必要があります
i && j;
i = i+1;
j = j+1;
したがって、2 つの式の結果は同じでなければなりません。しかし、そうではありません。どこで間違った概念を持っているのか、誰でも助けてください。