你已经学会了如何推断现在的情况:she must be tired。但如果你要推断的事情发生在过去呢?眼前的线索完全可以是现在的——比如地面是湿的、门没锁——而结论本身却指向更早发生的事。英语有一套专门的结构来表达这种情况:情态动词 + have + 过去分词

  • The lights were off and no one answered. They must have gone out.(几乎可以确定这件事发生过)
  • He says he ran a marathon in two hours. He can't have run that fast.(几乎可以确定这件事没有发生过)
  • She looked surprised when I mentioned it. She might not have heard the news yet.(有可能,但不确定)

逻辑和推断现在的情况完全一样——都是从线索推出结论——只是时间上往回退了一步。

核心句型: 主语 + must / can't / might + have + 过去分词 → It must have rained. She can't have known. He might have left.

三个情态动词一览

情态动词 表达含义 例句
must have 几乎可以肯定某事发生过 She must have left early — her car's gone.
can't have 几乎可以肯定某事没有发生过 He can't have finished already — it's only been five minutes.
might have 只是有可能,并不确定 They might have missed the train.

三者都遵循同样的结构:情态动词 + have + 过去分词。情态动词后面永远是 have,绝不是 hashad——✅ he must have gone,绝不是 ❌ he must has gone 或 ❌ he must had gone

Must have:对过去作出有把握的判断

当线索强烈指向某事确实发生过,使你几乎可以确定,就用 must have

  • The ground is wet. It must have rained last night.
  • She knows every detail of the trip. She must have been there before.
  • The door's unlocked. Someone must have forgotten to lock it.

和用 must 推断现在的情况一样,这也是根据线索得出的结论——不是你亲眼见到的事实。

值得把表示推断的 must have 和表示过去义务的 had to 区分开来。She must have left early 是对可能发生了什么的推测;She had to leave early 陈述的是她确实承担过的义务。现在时的形式请参阅 Have to / must (obligation)

Can't have:排除某种可能

当线索使某事几乎不可能发生过时,就用 can't have(或 couldn't have,用法完全相同)——它相当于 must have 的反面:用来排除某件事发生过的可能。

  • He can't have read the whole book — he only borrowed it yesterday.
  • That can't have been her — she was with me all evening.
  • They couldn't have left yet; their car is still in the driveway.

对过去的否定推断要用 can't havecouldn't have,不用 mustn't have:✅ It can't have been him. — ❌ It mustn't have been him. Mustn't 表示禁止,而不是不可能。

汉语里常说“不可能是他”“不可能发生过”,对应英语过去否定推断时通常用 can't have / couldn't have,不要直译成 mustn't havemustn't 更像“禁止”。

Might have(以及 may have、could have):不确定的可能性

当你真的不确定某事是否发生过时,用 might have——或 may have / could have。线索并没有明确指向任何一方。

  • She's not answering her phone. She might have lost it.
  • He could have missed the bus — that would explain why he's late.
  • I'm not certain, but they may have already told her.

Might have 的语气比 must have 弱得多。说 she must have lost her phone 表示相当有把握,而 she might have lost it 只是提出一种可能性。

Could have 值得特别留意:在推断中它表示“这有可能发生过”,但同样的词语也可以表达别的意思——一种未曾实现的过去可能性,或是一种责备,如 You could have told me!(意思是:你当时没有说,但本应该说)。具体含义要结合语境判断。否定形式 couldn't have 通常和 can't have 一样,表示强烈的否定推断,而不像 might not have 那样保留开放的不确定性。

否定有两种不同的表达方式,含义也不同。 Might not have(或 may not have)保留同样开放的不确定性,只是针对相反的结果:she might not have seen the email 表示她有可能没看到邮件——你仍然不确定。这和 can't have 不同,后者是完全排除某种可能:she can't have seen the email 表示你几乎可以确定她没有看到邮件。

关于 maymightcould 表达现在或将来可能性的用法,请参阅 Modals of possibility (may, might, could)

推断过去某个正在进行的动作

当推断的对象是过去某个时刻正在进行的事情时,在 -ing 形式前加上 been:情态动词 + have been + 动词的 -ing 形式。

  • The engine was warm. Someone must have been driving the car recently.
  • She was out of breath. She must have been running.
  • He didn't hear the phone — he might have been sleeping.
推断 句型 例句
几乎确定当时正在发生 must have been + -ing They must have been waiting for hours.
几乎确定当时没有发生 can't have been + -ing She can't have been listening — she missed the whole point.
可能当时正在发生 might have been + -ing He might have been working late that night.

对现在的推断与对过去的推断

两套系统的逻辑和核心情态动词完全相同——只是情态动词后面的动词形式不同:

推断的时间 结构 例句
对现在作推断 情态动词 + 动词原形 She must be tired.
对现在正在进行的动作作推断 情态动词 + be + -ing She must be sleeping.
对过去作推断 情态动词 + have + 过去分词 She must have been tired.
对过去正在进行的动作作推断 情态动词 + have been + -ing She must have been sleeping.

如果你对现在时的形式还不太有把握,建议先复习 Modals of deduction: present (must, can't, might)——这里的内容都是直接建立在那套句型之上的。

常见错误

  • It mustn't have been true. → ✅ It can't have been true.mustn't 表示禁止,不表示不可能;否定推断用 can't have / couldn't have
  • She must have leave early. → ✅ She must have left early.have 后面需要过去分词,不是动词原形)
  • He must has gone home. → ✅ He must have gone home.(情态动词后永远是 have,绝不是 hashad
  • They can't went there. → ✅ They can't have gone there.(情态动词后不能用一般过去式——需要 have + 过去分词)
  • She must be tired yesterday. → ✅ She must have been tired yesterday.(涉及过去的时间状语时要用过去推断的形式,而不是现在时的形式)

检验一下

为每句推断选择最合适的"情态动词 + have"形式。

  1. The cake is missing and there's chocolate on the dog's nose. The dog ____ the cake.(must have eaten / can't have eaten)
  2. She said she was in Paris all week, but I saw a photo of her in London on Tuesday. She ____ telling the truth.(must have been / can't have been)
  3. I'm not sure why he didn't reply — he ____ his phone at home.(might have left / can't have left)
  4. The lights were on and music was playing when we got there. Someone ____ a party.(must have been having / might have had)
显示答案
  1. The dog must have eaten the cake.(巧克力这一线索几乎可以确定这一点)
  2. She can't have been telling the truth.(照片直接与她的说法矛盾——几乎不可能)
  3. He might have left his phone at home.(一个合理的猜测,但并不确定)
  4. Someone must have been having a party.(灯亮着、音乐放着,强烈暗示当时正在开派对)

要点总结

  • Must have + 过去分词 = 根据线索,几乎可以肯定某事发生过。
  • Can't have + 过去分词 = 几乎可以肯定某事没有发生过——这是否定推断的形式,而不是 mustn't have
  • Might have(或 may have / could have)= 有可能但不确定;might not have 对相反的结果保留同样的不确定性,这一点不同于完全排除某种可能的 can't have
  • 推断过去正在进行的动作时,加上 beenmust have been workingcan't have been sleepingmight have been waiting
  • 结构永远是情态动词 + have + 过去分词——绝不是 hashad,或情态动词后直接跟一般过去式。
  • 这是现在时推断(must becan't bemight be)在过去时中的对应形式——同样的核心情态动词,只是后面的动词形式不同。