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=(Y−1970)×365+(Y−1969)/4+DayInMonth[M−1]+……
一同事错误把整型改为浮点型,时间戳错了。一定不能改不十分确定明白的代码。
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-tT−t;统计耗时出现如下错误:用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;改回按值捕获。

被折叠的 条评论
为什么被折叠?



