溢出警告
来源:互联网 发布:ps二维码源码 编辑:程序博客网 时间:2024/05/16 11:32
最近开发一个GPS同步FPGA时间的功能,需求是将GPS时间写入到FPGA配置好的32位寄存器中。给的需求是时间精度微秒,范围是0~1小时(但GPS输出时间精度也只有1ms……)。在写入寄存器过程中为了测试60*60*1000*1000微秒是否溢出。写了如下demo。
int main(int argc,char* argv[])
{
unsigned int value;
value =60 *60*1000*1000;
printf("value = %x\n", value);
}
编译爆出一个警告,如下图所示,但是value值对应的十六进制是0xd693a400并没有超过32位,为什么会有如下警告呢。
最后在CSDN上查找 到了参考解释,可以作为参考 。我的理解是,编译器,会申请一个变量来存放这个数60*60*1000*1000,且默认是int型变量来存,对于60*60*1000*1000,肯定超过了int型变量的范围,所以给出了警告。因此我们需要做的是告诉编译器用unsigned int或者long long来存储该变量。因此,如下修改就是正确的,没有警告。其实这与编译器有一定的关系,毕竟用什么来存储是与编译器有关的,而编译器又和硬件平台相关,所以有了如下链接所示的讨论。
int main(int argc,char* argv[])
{
unsigned int value;
value =60u *60u*1000u*1000u;
value =60ll*60ll*1000ll*1000ll;
printf("value = %x\n", value);
}
参考:http://bbs.csdn.net/topics/370186977
- 溢出警告
- 解决UIColor设置值溢出的警告(UIColorBreakForOutOfRangeColorComponents)
- Android之“Handler内部类引起的内存溢出警告”
- 编译时给出警告的小trick,利用下标溢出的警告
- 警告
- 警告
- 溢出
- 溢出
- 溢出
- 溢出
- 溢出
- 警告窗口
- 警告对话框
- 病毒警告!
- 米兰达警告
- 身体警告
- 编译警告
- 去掉警告
- Hbase常用命令
- Hadoop2.2.0集群搭建
- 强执行力领导者的七大特质
- Ubuntu下搭建PIXHAWK开发环境
- 配置Jstl的Maven依赖
- 溢出警告
- hdu 5740(构造,KM)
- ARM WFI和WFE指令
- 每天进步一点点——负载均衡之反向代理
- 【工具】Visual Studio 2015的离线MSDN Microsoft help viewer 2.2 注册表修改
- 黑马程序员:平均薪资近12K,Android续写“刷薪”记录!
- 文章标题
- Where Amazing Happens
- poj 3254 Corn Fields