这个flag1与flag2为啥调不了1 导致左后输出达不到想要的要求

#include<iostream>
#include<iomanip>
#include<stdlib.h>
using namespace std; 

int main()
{
   char a[4];
   char b[4];
   gets(a);
   int flag1=0,flag2=0;//旗子 
   gets(b);
   for(int i=0;i<4;i++)
   {
       if('0'<=a[i]&&a[i]<='9')
          {
           flag1=1; 
       }
    else
       {
       flag1=0;
       }
   }
   puts(a);   puts(b);
   for(int i=0;i<4;i++)
   {
       if('0'<=b[i]&&b[i]<='9')
          {
           flag2=1; 
       }
    else
       {
       flag2=0; 
       }
   }

   int m=atol(a);
   int n=atol(b);
   cout<<m+n;
   cout<<flag1<<"  "<<flag2<<endl;
      if(flag1==1&&flag2==1)
  {
       
  cout<<m<<" + "<<n<<"="<<m+n;
   }
   return 0;
} 

 

你不说题目,完全不知道你写的是啥

OK 我试试  但是这样并不能判断后续的字符信息