3

このコードがある場合、論理演算子を使用した前後のインクリメントについて質問があります

void main()
{int i = - 3 , j = 2 , k = 0 , m ;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);}

インクリメント演算子とデクリメント演算子は && や || よりも優先順位が高いことを知っています。したがって、それらは最初に実行されます && は
-2||3&&1 を意味するよりも高く、printf の値は -2 3 1 1 になります

しかし、VS2010で試したときに得られる出力は -2 2 0 1 です

誰かがそれについて何か説明がありますか? よろしく、、

4

1 に答える 1

4

これは、短絡から得られるものです。++iは -2 で、残りは評価する必要はありません (標準に準拠していません)。||-2 は 0 ではないため、 の左側は true であり、式全体が true です。

于 2013-04-11T00:45:02.833 に答える