-5

这是我的代码:

int month()
  {
      //this array contains all of the months names
       char months[24] = {'JANUARY', 'FEBURARY',  'MARCH ', 'APRIL', 'MAY', 'JUNE',      'JULY',
                 'AUGUST', 'SEPTEMBER', 'OCTOBER', 'NOVEMBER', 'DECEMBER', 'JAN',
                 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEPT', 'OCT', 'NOV',         'DEC'};


       char month_name[10];  // a null terminating char array for your month of birth
       cin >> month_name;

       for(int j = 0; j <= 24; j++ )
           {
             if(month_name == months[j])
           {
              return month_name;
           }
             else
           {
             cout << "\n" << endl;
             show_error();
             cout << "\n" << endl;
             bFlag = false;
             return bFlag;
           }
          }

        }

每当我尝试运行它时,我都会收到消息警告:隐式常量转换溢出。这是什么意思?

4

1 回答 1

2

首先,您的月份名称应该在"引号之间,并使其成为一个数组char *

char* 月[] = {“一月”、“二月”、...“十二月”}

然后,如果返回值是,而不是使用==use来比较字符串,则您有一个匹配项。_stricmp0

iin表示忽略大小写(因此通过_stricmp对小写字母进行比较,“January”和“january”被认为是相等的),否则使用strcmp

_stricmp记录在这里stricmp在 Visual Studio 中已弃用)但检查来自 mux 的评论,我不熟悉该功能,但他可能是对的!

正如 Nik B. 指出的那样,您应该始终返回一个 int。当您找到月份时,返回其索引 ( j)。看看您现在如何为月份添加短名称,您可以使用 0 到 11 与 1 月到 12 月保持对应关系

return j % 12;
于 2012-11-16T18:08:49.533 回答