4

K&R を読んでいるのですが、次のコードで混乱します。誰か説明してくれませんか。前もって感謝します。

int leap;
leap = year%4 == 0 && year%100 !=0 || year%400 == 0;
4

5 に答える 5

3

true(1) または false(0) を返します。飛躍をブール値に設定することもできます。

int leap;
leap = year%4 == 0 && year%100 !=0 || year%400 == 0;

あなたの年が 2000 年であるとします。

leap = 2000%4 == 0 && 2000%100 !=0 || 2000%400 == 0
leap = true(1) && false(0) || true(1)
leap =false(0) || true(1)
leap = 1;

混乱を避けるために、常に括弧を使用してください。この場合、優先順位は左から右であるため、混乱することはありません。

これは、ステートメントが実行される方法です。

%, ==, !=, &&, ||
于 2013-07-26T03:48:27.533 に答える