This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

有两个问题请高手帮忙解答



第一个问题:CCS5.0版本可以同时用于两台电脑的正版注册,我先在一台电脑上安装了CCS5.0,然后上网申请了一个liscence,过了一段时间我又想在另外一台电脑上再安装CCS5.0并继续追加申请一个liscence,按照合纵达提供的资料我申请了liscence,但第二台电脑任然显示的事30天的试用版,看着天数一天天的减少心理面犯急,请各位专家高手看看是我哪里弄错了是不是,我申请的时候在一个界面上的第一个输入框输入的是第一台电脑的mac,第二个框空出,第三个框输入的是第二台电脑的mac;

第二个问题:在调试6678应用软件时,我在程序里面定义了一个二维数组[2][3000],类型为double,在程序运行过程中我将一些重要参数依次存入了这个二维数组,存满之后,设置断点查看数组里面的数据,结果,里面的数据元素全部为0或者一些很大或者很小的的数(理论上这是不可能的,因为程序运行的很好,且数据的范围我是知道的),这是为什么到底,请高手解答

  • 问题1 我也不知道
    问题2 我猜测的原因是:
    数组是double型,如果你存入的参数不是double数据,那显示的时候工具按照double数据的格式去解析,显示就会不正常。

  • 第二个问题的回复:赋值是从double型到double型,该不是ccs设置的问题,我用的是安装默认的设置。即使我存入的不是double型的,按理说精度也不好损失,显示也应该不会错吧?

  • 参考一下下面这个例子吧:


    double dbBuf[8];
    void main(void)
    {

    /* 存数方法1 */
    int * ptr;
    ptr = (int *)&dbBuf[0]; //把double数组的指针赋值给整型指针
    ptr[0] = 12345678; //整型数存入整型指针,没有类型转换

    /* 存数方法2 */

    dbBuf[1] = (double)12345678; // 整数存入double指针,有类型转换
    }

    在expression窗口观察到的结果(default的显示格式):
    dbBuf double[8] 0x00803960 0x00803960
    [0] double 6.099575374418069e-317 0x00803960 //显示异常
    [1] double 12345678.0 0x00803968 //显示正常
    [2] double 0.0 0x00803970
    [3] double 0.0 0x00803978
    [4] double 0.0 0x00803980
    [5] double 0.0 0x00803988
    [6] double 0.0 0x00803990
    [7] double 0.0 0x00803998

    在expression窗口观察到的结果(按16进制的显示格式):

    dbBuf double[8] 0x00803960 (Hex) 0x00803960
    [0] double 0x0000000000BC614E (Hex) 0x00803960   // 0xBC614E = 12345678
    [1] double 0x41678C29C0000000 (Hex) 0x00803968  //0x41678C29C0000000是12345678的浮点表示格式
    [2] double 0x0000000000000000 (Hex) 0x00803970
    [3] double 0x0000000000000000 (Hex) 0x00803978
    [4] double 0x0000000000000000 (Hex) 0x00803980
    [5] double 0x0000000000000000 (Hex) 0x00803988
    [6] double 0x0000000000000000 (Hex) 0x00803990
    [7] double 0x0000000000000000 (Hex) 0x00803998

  • 首先谢谢您的回复,其实这钟赋值在ccs3.x版本上也会出现这种结果,我现在遇到的问题是:我在ccs3.x版本上的正常赋值行为到了ccs5.x上就行不通了,这个不知道为什么,您的意思是说我应该加个强制类型转换是吧,可是我同类型的赋值,应该不存在这种情况,觉得ccs5.x很不好用