✨ ベストアンサー ✨
これは仮定法過去完了の文に、過去の事実に反するものになります。意味としては、『もし今日雨が降ると知っていたら、車で来ていたのに。』になります。雨が降ると知らなかったので、車ではない何か、例えば歩きとか?で来てしまったという表現になり、車以外の何かで既にcomeしたので過去の事実ということになり、それに反しているので、仮定法過去完了を使っています。
そして、仮定法の表現では、実際に起こった、もしくは起きる事実とは反することを述べる時に使うので、文の中に現在形がはいることはありません。ですから、cの選択肢は無くなります。そして、aでない理由ですがDになる理由を説明すると理解しやすいと思いますので、そちらを説明しますね!
例えば、20番の文を普通に直すと、”I know it will rain today” =私は今日雨が降ると知っている。となります。今雨が降っていれば、誰でも今日雨が降るかどうかは知っていますが、今は降ってないけど後に降るということを知っているので、未来を表すwillが入ります。そして、仮定法の表現なので現在形は使われませんから、willの過去形wouldが入り、Dが答えになります。
長くてすみません。
If Tom comes tomorrow, I will give him your message. は仮定法ではなく未来を表す表現になります!ifがあるから仮定法ではなく、助動詞would/could/mightがあるから仮定法だと判断しなければなりません。ちなみに、上記の文は、if節は未来を表す副詞節になるので、未来のことであっても現在形になります(comesのように)。
そもそも、仮定法とは実際の事実に反する時に用いります。たとえば、もし私が鳥だったら〜のように、私は人間であり、鳥ではないですよね?これは現在の事実とは異なり、ただの願望なので、過去形を使って今とは異なることだと分かるようにしています。20番の問題でも、私は今日雨が降るとはしらなかったので、知っていたらという願望を表しています。そして、過去の事実とは異なることなので、過去完了(had known)を用いており、時制を表すため、willの過去形であるwouldを使っています!
説明下手ですみません、理解出来ていない箇所があればどんどん聞いてください!理解するまで解説しますよ😊
すごく親切に教えてくださってありがとうございます!
すでに起こってることとは違う願望というこれから現実に起こりそうもないことを表すのに仮定法を使うので、未来系のwillにすると可能性がある文になってしまうため仮定法には使えない。
もうすでに雨が降っていて、それなのに車以外の何かで来てしまっていて、もう起こってしまったことなのでこれから「雨が降るから車で行こう」という選択が取れるわけないけどそうだったらよかったのにという願望を表しているので仮定法過去にする。
という考え方であってますか?
後、何度も説明してくれているところなのにごめんなさい。
it would have rained todayという文にwouldが入る理由は本当はit will have rain today「今日雨が降るでしょう」という文のはずだけど周りが仮定法過去完了なので雨は降っている状況の文にならないとおかしいからwouldに変えているということですか?
あ、間違えてますね。答えDであってます。
勘違いしちゃいましたごめんなさい💦
すごく納得できました!
確かにhad knownが過去のことを言っているから知る内容も過去じゃないとおかしいですね。
やっと理解できました!
私の理解力なくて何度も説明させてしまってごめんなさい。助かりました!ありがとうございました!
いえいえ、逆に分かりづらくてすみません😅
学生皆さんがつまずく範囲なので、焦らずゆっくり勉強頑張ってください!

仮定法でも未来を表すときはwillや現在形がきますよね?
If Tom comes tomorrow, I will give him your massage.
のように
こういう文にならないのは「today」があるので現在の形になるからですか?
未来を表すwillを仮定法だから現在形は使えないのでwouldにするというのはどういうことですか?
質問多くてごめんなさい。