pow的值如果为double类型的话,你当然不能进行&运算了,你要将double类型转成int 类型的

解决方案 »

  1.   

    1。按为与操作不能在double上操作
    2。 return CString(a);
      

  2.   

    return CString(a); 后,还可以付值给b[3]么?
      

  3.   

    试过了,可以,但是小数点丢了。怎样才保留小数点?
             CString b;
    char c[3];
    b=s();
    strcpy(c,(LPCSTR)b);
      

  4.   

    CString CAaaDlg::s()
    {
    char a[3]={12.2,34.4,23.9};
    return CString(a);
    }
     
    void CAaaDlg::OnOK() 
    {
    CString b;
    char c[3];
    b=s();
    strcpy(c,(LPCSTR)b);
    CDialog::OnOK();
    }
    小数点丢了!怎样避免?
      

  5.   

    1。改成re=a & (int)pow(2,i);就可以了。如果你的i只取整形值,不会损失精度。如果不取整形值,那么同一个浮点数与是没有意义的。2。函数可以返回一个对象,但不能返回一个数组。而且你的char a[3]={0.123,21,32.3432};
    定义本身就有问题——怎么可以把浮点数赋给字符型变量呢?这样小数点不丢才怪!可以这样改:
    CString s(int i)
    {
       CString szRet;
       float a[3] = {0.123, 21, 32.3432};
       if(i>=3 || i<0)
          szRet.Empty();
       else
          szRet.Format("%f", a[i]);
       return szRet;
    }
    不过,我其实还是不大明白你的意思。不知这样是不是你的本意。
      

  6.   

    函数不能返回数组。虽然用返回CString的办法好像返回了一个数组,但这样做,一来系统开销很大(CString的拷贝比较辛苦),二来它只能返回字符型数组。而你要的却是浮点数,用字符变量肯定不行。可以这样做:
    void s(float c[])
    {
       float a[3] = {0.123, 21, 32.3432};
       for(int i=0; i<3; i++)
          c[i] = a[i];
    }
    调用的时候:
    float c[3];
    s(c);
    这样就可以了。