引发未经处理的异常:读取访问权限冲突怎么处理
很可能是数组越界了,索引大于等于size()的大小了。
加断点调试,先把错误定位到具体出错的代码行
添加短点的地方报错了,但是不知道为什么
Date lunar::LuanrDate(int calendar_year, int calendar_month, int calendar_day)
{
Date luanr_date;
luanr_date.year = calendar_year;
luanr_date.month = 0;
luanr_date.day = 0;
luanr_date.leap = false;
int year_index = calendar_year - beginyear;
//计算春节的公历日期
int spring_thisyear_month = (LUNAR_YEARS[year_index] & 0x60) >> 5;//进行按位与运算
int spring_thisyear_day = (LUNAR_YEARS[year_index] & 0x1f);
//计算今天是公历年的第几天
int today_Common_many_yd = How_many_dya(calendar_year, calendar_month, calendar_day);
//计算春节是公历年的第几天
int spring_leap_many_yd = How_many_dya(calendar_year, spring_thisyear_month, spring_thisyear_day);
//计算今天是农历年的第几天
int today_luanr_yd = today_Common_many_yd - spring_leap_many_yd + 1;
//如果今天在春节的前面,重新计算today_luanr_yd
if (today_luanr_yd < 0)
{
//农历年比当前公历年小1
year_index--;
luanr_date.year--;
spring_thisyear_month = (LUNAR_YEARS[year_index] & 0x60) >> 5;
spring_thisyear_day = (LUNAR_YEARS[year_index] & 0x1f);
spring_leap_many_yd = How_many_dya(calendar_year, spring_thisyear_month, spring_thisyear_day);
int year_total_day = How_many_dya(luanr_date.year, 12, 31);
today_luanr_yd = today_Common_many_yd + year_total_day - spring_leap_many_yd + 1;
}
//计算月份和日期
int luanr_month = 1;
for (; luanr_month <= 13; luanr_month++)
{
int month_day = 29;
if ((LUNAR_YEARS[year_index] >> (6 + luanr_month)) & 0x1)
month_day = 30;
if (today_luanr_yd <= month_day)
break;
else
today_luanr_yd -= month_day;
}
luanr_date.day = today_luanr_yd;
//处理闰月
int leap_month = (LUNAR_YEARS[year_index] >> 20) & 0xf;//计算农历月份
if (leap_month > 0 && leap_month < luanr_month)
{
luanr_month--;
//如果当前月为闰月,设置闰月标志
if (luanr_month == leap_month)
luanr_date.leap = true;
}
assert(leap_month <= 12);//assert()检查函数参数的值
luanr_date.month = luanr_month;
return luanr_date;
}
好像是这段出现错误了,可以麻烦帮忙看看嘛,谢谢