これは if (x < 0) x = -x; と同じ動作をします。 この論理演算式の値(真か偽か)は使われません。x < 0 && x = -x;
/* ** プログラム名: kadai28 ** 動作: 論理演算式の評価順序 ** 作者: 自分の名前、学籍番号 ** 日付: 今日の日付 */ #include <stdio.h> int main(void) { int x = 0, y = 0; /* 1回目 */ if (++x < 2 || ++y >= 2) { printf("x=%d,y=%d\n", x, y); } /* 2回目 */ if (++x < 2 || ++y >= 2) { printf("x=%d,y=%d\n", x, y); } /* 3回目 */ if (++x < 2 || ++y >= 2) { printf("x=%d,y=%d\n", x, y); } return 0; } |
しかし実際の出力は上のようにはなりません。 その理由を考察して、メールで tokoiまで送ってください。 Subject: は kadai28 としてください。x=1,y=1 x=2,y=2 x=3,y=3