重複の可能性:
演算子の優先順位の問題
プレフィックスの優先&&
順位は「LOGICAL AND」より高く ( )、「LOGICAL AND」の優先順位は「LOGICAL OR」よりも高い( )ことがわかってい||
ます。
以下のプログラムはそれに違反しているようです:
int main()
{
int i=-3,j=2,k=0,m;
m=++i||++j&&++k;
printf("%d %d %d %d",i,j,k,m);
return 0;
}
の優先順位++
がそれ以上&&
の場合||
、すべてのプレフィックスが最初に実行されます。この後、i=-2,j=3,k=1
最初&&
に実行されます。出力が次のように表示される理由: -2 2 0 1
?
プログラムの動作は、ubuntu v12.04 でも同じです。