2009-08-06 2 views
0

나는 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); 
} 
+4

질문에 약간의 확장을 원할 수도 있습니다 ... –

+0

-1 더 많은 정보가 제공 될 때까지 –

+0

우선,'main()'은'void'를 반환해서는 안됩니다. 'int'를 리턴해야합니다. 'main()'이'void '를 반환하게하는 컴파일러는 모두 잘못되었습니다. –

답변

1

,

  1. 당신은 여러 매개 변수 를
      당신이 char 변수의 매개 변수를 저장하고 싶은
    • (가 배정 밀도로 연산을 수행 할 어쩌면 공간을 절약 할 수 있을까요?)
    • VA=0x000000F0;을 쓰려고하는 이유를 모르겠다. char (1 바이트) 변수
    • static value 당신은 참조
    • 당신이 기능의 sinsqrt 종류를 사용할 때 double 정밀
    • 에서 모든 산술에서 작업을하는 것이 유용 할 수 있습니다, 그들은 double에서 작동 등 VA 아마 상수 그래도
    • 여기에는 main 함수가 없습니다.
    • 는 실제 파일이있을 것입니다
    • 그렇게
    • (즉,이 코드를 컴파일), 나 또한 math.h
      이며
    • 는, 당신이 컴파일 명령에 수학 라이브러리를 포함처럼 당신이 일을 가정하고 바이너리 오류 어쩌면

당신이 좀 더 직면하고있는 문제를 자세히 설명 할 수없이 컴파일 얻을? 주석 1.
에서


  1. 업데이트 당신이 말하는 "8 바이트 배열로 문자"때 - 당신이 8 char 배열과 double를 만들려고? 당신의 대답은 double에있는 경우 주석 2. 에서

    • 업데이트, 당신은 double 변수에 잡을 수 있습니다.
      double은 이미 (대부분의 플랫폼에서) 8 바이트입니다.
      배열 또는 바이트 배열 char에 가져올 특별한 이유가 있습니까?

    • 업데이트 정보 3
      링크 오류는 링크 용 수학 라이브러리를 포함했음을 의미합니다.
      헤더는 컴파일을위한 함수 프로토 타입을 제공합니다.
      gcc을 사용하면 명령 줄에서 -lm이됩니다.

    • 의견 업데이트 4.등의 0xF0 같은 번호로 처리되도록

      How can I convert a floating-point value to an integer in C?

+0

사실이 프로그래밍에서는 8 바이트 배열로 문자를 만들려고합니다. 그리고 Va 값은 배열의 조합 일뿐입니다. 그래서 char 값을 방정식에 넣을 수 있습니다. –

+0

계산에서 대답은 double.so에 있어야합니다. 나는 8 자의 배열로 double을 생성해야합니다. 가능한. –

+0

@kiki : double VA = Van [0] + (Van [1] * pow (2) , 8)) + (Van [2] * pow (2,16)) + (Van [3] * pow (2,24)) ...; – Inshallah

0

이 당신의 컴퓨터에 char 일반에 서명하는 문제는,이 페이지를 확인 정수 값으로 double을 변환하려면 -16 대신 +240의? 어떤 기계에서는 이것이 일어날 것이라는 것을 알고 계셨습니까?

0

math.h를 포함하여 주석에서 언급 한 링크 오류에 관해서는 링커에 라이브러리를 추가하도록 지시해야합니다. 명령 줄에 "-lm"을 추가하십시오.

관련 문제