这是干嘛的 it get_moon_day(uchar month_p,uint table_addr) { uchar temp10; switch (month_p){ case 1:{temp10=year_code[table_addr]&0x08; if (temp10==0)return(0);else return(1);} default:return(2); } }
时间: 2024-04-23 15:26:38 浏览: 94
这是`get_moon_day()`函数的完整代码,用于计算农历月份的天数。其中,`month_p`为农历月份,`table_addr`为农历日期数据表的起始地址。函数返回值为一个位,表示计算结果,为1表示当前月份是闰月,为0则不是,为2则表示输入的月份不合法。
函数中使用了`switch`语句对输入的`month_p`进行判断,然后根据农历日期数据表中的信息进行计算。如果输入的是1(即农历正月),则读取农历日期数据表中`table_addr`地址处的数据,将其与0x08进行按位与运算,得到一个临时变量`temp10`。如果`temp10`为0,则表示当前年份的农历正月不是闰月,函数返回0,否则返回1。这个判断的目的是为了确定当前年份的农历正月是否是闰月,以便正确计算农历月份的天数。
如果输入的不是1,则直接返回2,表示输入的月份不合法。
相关问题
这是干嘛的 bit get_moon_day(uchar month_p,uint table_addr) { uchar temp10; switch (month_p){ case 1:{temp10=year_code[table_addr]&0x08; if (temp10==0)return(0);else return(1);}
这是`get_moon_day()`函数的一部分,用于计算农历月份的天数。这里使用了`switch`语句对输入的`month_p`进行判断,然后根据农历日期数据表中的信息进行计算。在这个`case`中,如果`month_p`为1(即农历正月),则读取农历日期数据表中`table_addr`地址处的数据,将其与0x08进行按位与运算,得到一个临时变量`temp10`。如果`temp10`为0,则表示当前年份的农历正月不是闰月,函数返回0,否则返回1。这个判断的目的是为了确定当前年份的农历正月是否是闰月,以便正确计算农历月份的天数。
翻译代码 code uchar day_code1[9]={0x0,0x1f,0x3b,0x5a,0x78,0x97,0xb5,0xd4,0xf3}; code uint day_code2[3]={0x111,0x130,0x14e}; bit c_moon; bit get_moon_day(uchar month_p,uint table_addr) { uchar temp10; switch (month_p){ case 1:{temp10=year_code[table_addr]&0x08; if (temp10==0)return(0);else return(1);} case 2:{temp10=year_code[table_addr]&0x04; if (temp10==0)return(0);else return(1);} case 3:{temp10=year_code[table_addr]&0x02; if (temp10==0)return(0);else return(1);} case 4:{temp10=year_code[table_addr]&0x01; if (temp10==0)return(0);else return(1);} case 5:{temp10=year_code[table_addr+1]&0x80; if (temp10==0) return(0);else return(1);} case 6:{temp10=year_code[table_addr+1]&0x40; if (temp10==0)return(0);else return(1);} case 7:{temp10=year_code[table_addr+1]&0x20; if (temp10==0)return(0);else return(1);} case 8:{temp10=year_code[table_addr+1]&0x10; if (temp10==0)return(0);else return(1);} case 9:{temp10=year_code[table_addr+1]&0x08; if (temp10==0)return(0);else return(1);} case 10:{temp10=year_code[table_addr+1]&0x04; if (temp10==0)return(0);else return(1);} case 11:{temp10=year_code[table_addr+1]&0x02; if (temp10==0)return(0);else return(1);} case 12:{temp10=year_code[table_addr+1]&0x01; if (temp10==0)return(0);else return(1);} case 13:{temp10=year_code[table_addr+2]&0x80; if (temp10==0)return(0);else return(1);} default:return(2); } }
这是一段关于农历计算的函数代码。其中,day_code1和day_code2是两个常量数组。get_moon_day函数用于获取某个月份的月天数,需要传入两个参数,一个是月份,一个是年份对应的数组地址。函数中,首先定义了一个名为temp10的变量,用于存储月份对应的二进制数值。然后根据不同的月份,从年份对应的数组中取出相应的二进制数值,并进行位运算判断是否为0,最终返回月份的天数,如果月份不在1-13之间,则返回2。
阅读全文