用UINT32_MAX来判断两个无符号数相减的大小

#define UINT32_MAX (0xFFFFFFFF)


#define UINT32_MAX (0xFFFFFFFF)


uint32_t utils_time_is_expired(iotx_time_t *timer)
{
    uint32_t cur_time;

    if (!timer) {
        return 1;
    }

    cur_time = HAL_UptimeMs();
    /*
     *  WARNING: Do NOT change the following code until you know exactly what it do!
     *
     *  check whether it reach destination time or not.
     */
    if ((cur_time - timer->time) < (UINT32_MAX / 2)) {
        return 1;
    } else {
        return 0;
    }
}


 

根据源码 UINT32_MAX / 2 得到 0x7FFFFFFF:

 

如果cur_time大于timer->time, 两个相减就会得到一个较小的无符号数。

如果cur_time小于timer->time,两个相间就会得到一个大的无符号数,最高位为1.

所用用UINT32_MAX / 2)用来表示 unint32中 两个数的大小。

 

 

你可能感兴趣的:(其它总结)