如何将数组字符放入等式中?

时间:2009-08-06 07:52:54

标签: c arrays

我尝试将8字节字符放入等式中导致很多错误,我应该做的是确保等式可以取静态值并产生8字节的输出。

#include <math.h>
#include <hidef.h> /* for EnableInterrupts macro */

#include "derivative.h" /* include peripheral declarations */

void voltage_measure(void);

void main(void) {

  voltage_measure();

}

void voltage_measure(void) {
   char Van1[8],VA;
   char Vbn[8],VB;
   char Vcn[8],VC;
   char AC[4],ac;
   char BC[4],bc;
   char AB[4],ab;    
   double Vab1,Vab2,Vbc1,Vbc2,Vac1,Vac2;
   double Vab[8],Vbc[8],Vac[8];

   Van1[0]=0xF0;   
   Van1[1]=0x00;
   Van1[2]=0x00;                                  
   Van1[3]=0x00;

   VA=0x000000F0;

   Vbn[0]=0x78;
   Vbn[1]=0x00;
   Vbn[2]=0x00;
   Vbn[3]=0x00;

   VB=0x78;

   Vcn[0]=0x3C;
   Vcn[1]=0x00;
   Vcn[2]=0x00;
   Vcn[3]=0x00;

   VC=0x3C;

   AB[0]=0xB4;
   AB[1]=0x00;

   ab=0xB4;

   AC[0]=0x2D;
   AC[1]=0x00;

   ac=0x2D;

   BC[0]=0x5A;
   BC[1]=0x00;

   bc=0x5A;
   Vab1=(VB*sin(ab))*(VB*sin(ab))  ;
   Vab2=(VA+(VB*cos(ab)))*(VA+(VB*cos(ab)));
   Vab[4]=sqrt(Vab1+Vab2);

   Vbc1=(VC*sin(bc))*(VC*sin(bc));
   Vbc2=(VB+(VC*cos(bc)))*(VB+(VC*cos(bc))) ;
   Vbc[4]=sqrt(Vbc1+Vbc2);

   Vac1=(VC*sin(ac))*(VC*sin(ac));
   Vac2=(VA+(VC*cos(ac)))*(VA+(VC*cos(ac)));
   Vac[4]=sqrt(Vac1+Vac2);
}

3 个答案:

答案 0 :(得分:1)

这是我已经理解的,

  1. 你想用具有多个参数的双精度算术
    • 您希望将参数存储在char变量中(可能是为了节省空间?)
    • 我不知道你为什么在VA=0x000000F0;(1字节)变量
    • 时尝试写char
    • 您引用的static value可能是常量VA
    • 让所有这些在double精度
    • 算术中运行可能会有用
    • 当您使用sinsqrt类型的功能时,它们将在double无论如何工作
    • 此处未列出main功能;
    • 它将存在于您的实际文件中(编译此代码)
    • 所以,我也假设你有像math.h这样的东西 和编译命令上的数学库
    • 就是说,你确实得到了没有错误编译的二进制文件
  2. 也许你可以详细说明你面临的问题了吗?


    1. 评论更新1.
      当你说“8字节数组的字符”时 - 你是否试图用8 double数组创建char

      • 从评论2更新。 如果您的答案位于double,则可以在double变量中找到答案 double已经是8字节(在大多数平台上) 是否有特殊原因将其置于char数组或字节数组中?

      • 评论3更新 链接错误意味着您确实包含了一个用于链接的数学库 标题只是为编译提供了函数原型 使用gcc,命令行上将为-lm

      • 评论4更新 要将double转换为整数值,请检查此页面,
        How can I convert a floating-point value to an integer in C?

答案 1 :(得分:0)

您计算机上的普通char是否有问题,因此0xF0等数字被视为-16而不是+240?您是否知道在某些机器上,这将会发生什么?

答案 2 :(得分:0)

关于您在评论中提到的链接错误:包括math.h是不够的,您还必须告诉链接器添加库。尝试在命令行中添加“-lm”。