私が知っているように、論理演算子&&
はよりも優先され||
ます。コードの実行時:
#include <stdio.h>
int main()
{
int i = 1, j =1, k = 1;
printf("%d\n",++i || ++j && ++k);
printf("%d %d %d",i,j,k);
return 0;
}
出力を与えています:
1
2 1 1
++i || ++j && ++k
が次のように評価され た場合にのみ可能です。
(++i) || (++j && ++k)
ただし、演算子の優先順位規則に従って、次のように評価する必要があります。
(++i || ++j) && (++k)
したがって、出力は次のようになります。
1
2 1 2
これで何がうまくいかないのですか?
注:私の理解では、優先順位の高い演算子は次のように評価されると思います(連想が残っている場合):
1.左の式を評価します
2.次に、右の式を評価します(必要な場合)
間違っていますか?