if...else...用法的逻辑问题

《全国计算机等级考试二级教程—— C 语言程序设计(2019年版)》
第 4 章 选择结构
习题4.21
4.21 编写程序,输入一位学生的生日(年:y0、月:m0、日:d0),并输入当前的日期(年:y1、月:m1、日:d1),输出该生的实际年龄。

  1. 判断年份
  2. 判断月份
  3. 判断天数

ex4_21.c

#include <stdio.h>

int main(void)
{
  int y0=0, y1=0, m0=0, m1=1, d0=0, d1=0;

  printf("请输入您的生日(例:1999 1 1)\n");
  scanf("%d%d%d", &y0, &m0, &d0);
  printf("您的生日为:%d年%d月%d日\n", y0, m0, d0);
  printf("请输入当前的日期(例:1999 1 1)\n");
  scanf("%d%d%d", &y1, &m1, &d1);
  printf("当前日期为:%d年%d月%d日\n", y1, m1, d1);

  if (y1 >= y0)
  {
    if (m1 >= m0)
    {
      if (d1 >= d0)
      {
        printf("您的实际年龄为:%d岁\n", y1-y0);
      }
      else
      {
        printf("您的实际年龄为:%d岁\n", y1-y0-1);
      }
    }
    else
    {
        printf("您的实际年龄为:%d岁\n", y1-y0-1);
    }
  }
  else
  {
    printf("您的实际年龄为:0岁\n");
  }

  return 0;
}

img

程序运行结果错误,不知道哪里逻辑有问题?

if (m1 >= m0)
{
if (d1 >= d0)
{
printf("您的实际年龄为:%d岁\n", y1-y0);
}
else
{
printf("您的实际年龄为:%d岁\n", y1-y0-1);
}
}
你想想这里,如果现在的月比以前大,而日比以前小,会输出什么?