-1
the Dining Philosophers Problemで作業中です。用フォークを配布iが見つかったこのループIMを使用:I"%"を使用すると、予期しない結果が発生する
int philosophersNumber=5;
for (int i = 0; i < philosophersNumber; i++) {
philosophers[i] = new Philosopher(
i,
forks[i],
forks[(i + 1) % philosophersNumber]
);
}
- を:哲学者の数
- フォーク[I]:右手用frok。
- フォーク[(i + 1)%哲学者番号]:左手のフローク。私はループの中で、いくつかのプリントを追加する場合
は、出力は次のようになります。
----- PHILOSOHPER 0 ------
Right fork: 0
Left fork: 1
----- PHILOSOHPER 1 ------
Right fork: 1
Left fork: 2
----- PHILOSOHPER 2 ------
Right fork: 2
Left fork: 3
----- PHILOSOHPER 3 ------
Right fork: 3
Left fork: 4
----- PHILOSOHPER 4 ------
Right fork: 4
Left fork: 0
まあ、私の疑問は簡単です:なぜ結果がある(I + 1)%5は、i + 1が5になるまで常にi + 1と同じで、結果は0ですか?私は変数の種類に関連していると思いますが、私は本当に分かりません。
モジュロは何ですか? – tkausl