打印

关于long类型存储位数的疑问

[复制链接]
1080|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tianli1980|  楼主 | 2014-7-12 23:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
今天编译自编程序时发现输出与期望结果不一致,一步步调试发现与long类型有关,于是写了小测试程序:右边是watch window对result的监控值,
void main()                                             //                   Watch window (result)           
{                                                            //
  int a=-1,b=1;                                                                       
  long result = -1;                                  //      1099511627775d(0x000000FFFFFFFFFF)
  result = a*(-1);                                   //                 1
  result = a*1;                                        //                 -1
  result = b*(-1);                                    //                 -1
  result =1*(-1);                                   //       1099511627775d(0x000000FFFFFFFFFF)
  result = -1+1;                                    //                  0
  result = -1+b;                                   //                  0
  result = -1+a;                                   //                 -2
  result = (-1)*(-1);                            //                 1
}
这样的结果让我很不解,初步认为是由于long类型在CCS for C6000中寄存器存储位数是40位而在watch window中是以64位解析造成的,希望有朋友们给个确切答案。

相关帖子

沙发
zhangmangui| | 2014-7-13 22:24 | 只看该作者
你应该先看看C6000的数据类型    DSP的数据类型比较复杂

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

482

主题

2214

帖子

11

粉丝