uint16_t getSubDays(uint16_t yearEnd,uint16_t monthEnd) { uint16_t result = 0; for(int i = 1921 ; i < yearEnd ; i++) { if(isLeapYear(i) == 0) result+=365; else result+=366; } for(int i = 1 ; i < monthEnd ; i++) { result += days[isLeapYear(yearEnd)][i]; } return result; }
时间: 2023-06-27 19:07:07 浏览: 47
这段代码实现了一个函数 `getSubDays`,用来计算从 1921 年到年末月末的天数。
具体来说,这个函数分两个循环来计算天数。第一个循环从 1921 年开始,到给定年份的前一年结束,每次循环判断这一年是否为闰年,如果是闰年则累加 366 天,否则累加 365 天。
第二个循环从 1 月开始,到给定月份的前一个月结束,每次循环调用 `days` 数组来获取这个月的天数,并把天数累加到结果中。
最终返回的 `result` 就是从 1921 年到年末月末的天数。
相关问题
2个uint8_t转换成uint16_t
将两个`uint8_t`类型的变量转换为`uint16_t`类型的变量可以通过以下方式实现:
1. 使用位运算符进行转换:
```cpp
uint8_t var1 = 0x12;
uint8_t var2 = 0x34;
uint16_t result = (static_cast<uint16_t>(var1) << 8) | var2;
```
这里使用了左移位运算符`<<`将`var1`左移8位,然后使用按位或运算符`|`将结果与`var2`进行合并。
2. 使用类型转换进行转换:
```cpp
uint8_t var1 = 0x12;
uint8_t var2 = 0x34;
uint16_t result = static_cast<uint16_t>(var1) << 8;
result |= static_cast<uint16_t>(var2);
```
这里使用了`static_cast`将`var1`和`var2`分别转换为`uint16_t`类型,然后进行位操作。
stm32 uint16_t转换成uint8_t
在STM32中,uint16_t和uint8_t是两种不同的数据类型,需要进行类型转换时可以使用强制类型转换。下面是将uint16_t转换成uint8_t的方法:
1. 使用位操作:
可以通过位操作来提取uint16_t变量的高8位和低8位,并将它们分别赋值给两个uint8_t变量。例如:
```c
uint16_t value = 0xABCD;
uint8_t highByte = (value >> 8) & 0xFF;
uint8_t lowByte = value & 0xFF;
```
2. 使用强制类型转换:
可以直接使用强制类型转换将uint16_t变量转换为uint8_t类型。例如:
```c
uint16_t value = 0xABCD;
uint8_t convertedValue = (uint8_t)value;
```
需要注意的是,使用强制类型转换时可能会丢失数据,因为uint8_t只能表示0~255的范围,如果uint16_t的值超过了这个范围,转换后的结果可能不准确。