一道语法题By the time you get to shanghai tomorrow,I_____for chongqing.By the time you get to shanghai tomorrow,I_____for chongqing.为什么选择shall have left 而不是选择will leave?希望把知识点说详细是虚拟还是条件还是将来完成时.

问题描述:

一道语法题By the time you get to shanghai tomorrow,I_____for chongqing.
By the time you get to shanghai tomorrow,I_____for chongqing.
为什么选择shall have left 而不是选择will leave?
希望把知识点说详细是虚拟还是条件还是将来完成时.

如果只是在shall have left 和will leave之间选择,考查的是时态,就是一般将来时和将来完成时。will do表示一般将来时,意思是打算或者准备将来做某事(还没有做)。shall have done表示将来完成时,意思是在将来的某个时间点之前,已经完成某事(某时间点之前已经做)。
By the time you get to shanghai tomorrow,I shall have left for chongqing. 意思是:明天你到达上海之前,我将已经前往重庆。在“你到上海”这个时间点“之前”,我“已经”前往重庆,有了“已经”,还是将来的情况,所以选择shall have left 这个将来完成时。
虚拟语气,很好理解,就是表示的内容并不是真实的,If she were not ill, she could do a lot of things.意思是:如果她没生病,她能做许多事情。“她没生病”是不真实的,实际她病了。而你的题目中,将前往重庆,是要真实发生的。
从句意可以看出,我前往重庆和你到上海之间,并不存在条件的关系,也没有引导条件主语从句的连词或者词组,所以也不是条件主语从句。
这句主要考察一般将来时和将来完成时,就看动作是否在将来时间已经完成。

因为by the time 的出现意味着使用完成时态而不是一般将来时态,而shall have在整句话中可理解为:当你明天这个时候抵达上海时,我也 将在那时已经(shall have) 抵达重庆.人已到了而不是will 所表达的“将出发而未到(重庆)”.