【C++】开发经验

C++工程开发经验

  • int类型转double引起问题

一个函数将日期从年月日时分秒转为Unix系统时间,函数内部年月日等变量原为整型,日期是闰年>2月,算天数的公式
D=(Y−1970)×365+(Y−1969)/4+DayInMonth[M−1]+…… D = (Y-1970)\times365+(Y-1969)/4+DayInMonth[M-1]+…… D=(Y1970)×365+(Y1969)/4+DayInMonth[M1]+……
一同事错误把整型改为浮点型,时间戳错了。一定不能改不十分确定明白的代码。

    int year = 2025;
    double yeard = 2025.0;
    int res_ok = year / 4;
    double res_ng = yeard / 4;
    std::cout << "int 2025/4 = " << res_ok << std::endl;
    std::cout << "double 2025.0/4 = " << res_ng << std::endl;
    res_ok *= 86400;
    res_ng *= 86400;
    std::cout << "Correct sec:" << res_ok << std::endl;
    std::cout << "Error sec:" << res_ng<< std::endl;
  • 整型变量溢出问题

一同事为实现定时(周期为T)执行某动作,循环中统计了已运行耗时t,确定sleep的时长,T−tT-tTt;统计耗时出现如下错误:用int32保存系统时间,单位为毫秒,当前约18亿多,已接近int32类型的上限,转微秒后溢出,变成了负数,sleep的时长从毫秒级变成了一个很大的数。

#include <stdio.h>
#include <time.h>
int main() {
    int t = time(NULL);
    printf("time is %d\n",t);
    t*=1000;
    printf("%d\n",t);
    return 0;
}
  • 一个并发编程问题
    一同事修改代码,有一处lambda表达式原为按值捕获,一个参数被改成按引用,这个参数是通过ROS回调传递的布局变量,而这个lambda表达式是一个要进入线程池的函数,结果导致coredump;改回按值捕获。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值