1.  C中
WORD m_n[20];
short int temp=0;

if(m_n[5]>32768)
   temp=m_n[5]-65536;
else 
   temp=m_n[5];

double pp;
pp=(double)temp;


改成Delphi应该怎么写呢?主要是这句pp=(double)temp;!
pp是double类型,temp是short int类型,没找到怎么转化。
2. C中

word BCIN;
float m_n;
BCIN=(short int)m_n;

转成Delphi代码应该怎么写?
BCIN=(short int)m_n;这句话好像本身就有副作用,short int类型数据赋给了WORD类型
 
3. C中
double deg;
int aa;
aa = (int)(deg/180 * 1024);
转成Delphi应该怎么写呢? 
主要是Double类型转成Integer类型搞不定
我写得是
deg : Double;
aa : Integer;deg := deg/180*1024;
aa := Integer(@Deg);
deg占8个字节,Integer占六个字节,上面写得指定不对,我直接写aa := Integer(Deg);提示Invalid TypeCast又试了下,改成
deg := deg/180*1024;
aa := Trunc(Deg);试了几个数,返回结果一样了看到这的就说说C中(int)和Delphi中int(),round(),Trunc()区别,那几个Delphi中有,那几个C中有,最好有例子,直接把区别体现出来谢谢!

解决方案 »

  1.   

    delphi中整型可以直接赋值给double类型变量\var
      pp:Double;
      i:integer;
    begin
      i := 10;
      pp := i;
      ShowMessage(FloatToStr(pp));
    end;
    对于double转整型,这个看你的需要了,dlephi提供了很多方法ROUND取整,是一个四舍五入函数,四舍六入五取双。这些帮助中都有
    Round(2.5)//2
    Round(2.6)//3
    Round(3.5)//4Trunc是取整数
    Trunc(1.2)//1
    Trunc(2.8)//2
      

  2.   

    发一下我以前的笔记,一些小经验,希望能给你帮助
    下面的数据你可以自己按照字节大小去对照C的:
    类型 取值范围 格式
    Integer -2147483648..2147483647 signed 32-bit
    Cardinal 0..4294967295 unsigned 32-bit
    Shortint -128..127 signed 8-bit
    Smallint -32768..32767 signed 16-bit
    Longint -2147483648..2147483647 signed 32-bit
    Int64 -2^63..2^63-1 signed 64-bit
    Byte 0..255 unsigned 8-bit
    Word 0..65535 unsigned 16-bit
    Longword 0..4294967295 unsigned 32-bit符点数:
    Real48 6字节
    Single 4字节
    Double 8字节
    Extended 10字节
    Comp 8字节
    Currency 8字节
    Real 8字节另外Delphi中Integer(a)其实是强制类型转换
    你写的那个
    aa := Integer(@Deg);
    即使不出错,得到的应该也不是你想要的结果,上面的代码等同于C的:
    aa=(int)&Deg;int()的作用是把小数点后面的值清零,
    Round()函数是四舍五入函数,
    Trunc()跟int()功能类似,直接去除小数部分,不过它返回的是个整数
      

  3.   


    double deg;
    int aa;
    aa = (int)(deg/180 * 1024);deg := deg/180*1024;
    aa := Trunc(Deg);那这两段是完全等价的吗? 
    或者我应该怎么改,才是完全等价的
      

  4.   

    在取值不极端的时候可以看作是等价,
    C中的double是8字节,Delphi中的也是8字节C里的是1.7E-308到1.7E308
    Delphi 里的Double是5.0E-324到1.7E308
      

  5.   

    Round 函数是以 CPU 的 FPU (浮点部件) 处理器为基础的。这种处理器采用了所谓的 "银行家舍入法",即对中间值 (如 5.5、6.5) 实施Round函数时,处理器根据小数点前数字的奇、偶性来确定舍入与否,如 5.5 Round 结果为 6,而 6.5 Round 结果也为6, 因为 6 是偶数。
      

  6.   

    word BCIN;
    float m_n;
    BCIN=(short int)m_n;转成Delphi代码应该怎么写呢?
      

  7.   

    C++ Delphi Range   
      Char ShortInt -128   to   127   
      - Char 1   ASCII   character   (0   to   255)   
      Int,   Short SmallInt -32,768   to   32,767   
      Long Integer   /   LongInt -2,147,483,647   to   2,147,483,647   
      Unsigned   Char Byte 0   to   255   
      Unsigned   Int   /   Unsigned   Short Word 0   to   65,535   
      Unsigned   Long Cardinal   /   Longword 0   to   4,294,967,295   
      Float Single 3.4E-38   TO   3.4E+38   
      Double Double   /   Comp 1.7E-308   TO   1.7E+308   
      Long   Double Extended 3.4E-4932   TO   3.4E+4932   
      Void Pointer N/A   --   an   untyped   pointer   
      - Boolean True   or   False   
      String - a   C++   standard   object   
      - String An   array   of   up   to   255   ASCII   characters   
      char   FAR   * Pchar Pointer   to   a   null-terminated   string   
      unsigned   short   FAR   * PWORD Type   of   pointer   
      LPWSTR PWideChar Type   of   pointer   
      LPTSTR PAnsiChar Type   of   pointer   
        
        
      C/C++   Type ObjectPascal   Type   
      unsigned   short   [int] Word   
      [signed]   short   [int] SmallInt   
      unsigned   [int] Cardinal   {   3.25   fix   }   
      [signed]   int Integer   
      UINT LongInt   {   or   Cardinal   }   
      WORD Word   
      DWORD LongInt   {   or   Cardinal   }   
      unsigned   long LongInt   {   or   Cardinal   }   
      unsigned   long   int LongInt   {   or   Cardinal   }   
      [signed]   long LongInt   
      [signed]   long   int LongInt   
      char Char   
      signed   char ShortInt   
      unsigned   char Byte   
      char* PChar   
      LPSTR   or   PSTR PChar   
      LPWSTR   or   PWSTR PWideChar   {   3.12   fix   }   
      void* Pointer   
      BOOL Bool   
      float Single   
      double Double   
      long   double Extended   
        
      LP,NP,PP,P   prefix:   if   first   =   T   then   T   becomes   P   else   P   prefix   
        
      HANDLE THandle   
      FARPROC TFarProc   
      ATOM TAtom   
      TPOINT TPoint   
      TRECT TRect   
      COLORREF TColorRef   
      OFSTRUCT TOFStruct   
      DEBUGHOOKINFO TDebugHookInfo   
      BITMAP TBitMap   
      RGBTRIPLE TRGBTriple   
      RGBQUAD TRGBQuad   
      BITMAPCOREHEADER TBitmapCoreHeader   
      BITMAPINFOHEADER TBitmapInfoHeader   
      BITMAPINFO TBitmapInfo   
      BITMAPCOREINFO TBitmapCoreInfo   
      BITMAPFILEHEADER TBitmapFileHeader   
      HANDLETABLE THandleTable   
      METARECORD TMetaRecord   
      METAHEADER TMetaHeader   
      METAFILEPICT TMetaFilePict   
      TEXTMETRIC TTextMetric   
      NEWTEXTMETRIC TNewTextMetric   
      LOGBRUSH TLogBrush   
      LOGPEN TLogPen   
      PATTERN TPattern   {   TLogBrush   }   
      PALETTEENTRY TPaletteEntry   
      LOGPALETTE TLogPalette   
      LOGFONT TLogFont   
      ENUMLOGFONT TEnumLogFont   
      PANOSE TPanose   
      KERNINGPAIR TKerningPair   
      OUTLINETEXTMETRIC TOutlineTextMetric   
      FIXED TFixed   
      MAT2 TMat2   
      GLYPHMETRICS TGlyphMetrics   
      POINTFX TPointFX   
      TTPOLYCURVE TTTPolyCurve   
      TTPOLYGONHEADER TPolygonHeader   
      ABC TABC   
      RASTERIZER_STATUS TRasterizer_Status   
      MOUSEHOOKSTRUCT TMouseHookStruct   
      CBTACTIVATESTRUCT TCBTActivateStruct   
      HARDWAREHOOKSTRUCT THardwareHookStruct   
      EVENTMSG TEventMsg   
      WNDCLASS TWndClass   
      MSG TMsg   
      MINMAXINFO TMinMaxInfo   
      SEGINFO TSegInfo   
      ACCEL TAccel   
      PAINTSTRUCT TPaintStruct   
      CREATESTRUCT TCreateStruct   
      CBT_CREATEWND TCBT_CreateWnd   
      MEASUREITEMSTRUCT TMeasureItemStruct   
      DRAWITEMSTRUCT TDrawItemStruct   
      DELETEITEMSTRUCT TDeleteItemStruct   
      COMPAREITEMSTRUCT TCompareItemStruct   
      WINDOWPOS TWindowPos   
      WINDOWPLACEMENT TWindowPlacement   
      NCCALCSIZE_PARAMS TNCCalcSize_Params   
      SIZE TSize   
      MENUITEMTEMPLATEHEADER TMenuItemTemplateHeader   
      MENUITEMTEMPLATE TMenuItemTemplate   
      DCB TDCB   
      COMSTAT TComStat   
      MDICREATESTRUCT TMDICreateStruct   
      CLIENTCREATESTRUCT TClientCreateStruct   
      MULTIKEYHELP TMultiKeyHelp   
      HELPWININFO THelpWinInfo   
      CTLSTYLE TCtlStyle   
      CTLtype TCtltype   
      CTLINFO TCtlInfo   
      DDEADVISE TDDEAdvise   
      DDEDATA TDDEData   
      DDEPOKE TDDEPoke   
      DDEAACK TDDEAck   
      DEVMODE TDevMode   
      KANJISTRUCT TKanjiStruct   Delphi、C/C++、Visual   Basic数据类型的对照     
      ================================================================================     
      变量类型                           Delphi                                 C/C++                                       Visual   Basic     
      8位有符号整数                 ShortInt                             char                                         --     
      8位--符号整数                 Byte                                     BYTE,unsigned   short           Byte     
      16位有符号整数               SmallInt                             short                                       Short     
      16位--符号整数               Word                                     unsigned   short                     --     
      32位有符号整数               Integer,Longint               int,long                                 Integer   Long     
      32位--符号整数               Cardinal,LongWord           unsigned   long                       --     
      64位有符号整数               Int64                                   _int64                                     --     
      4字节浮点数                     Single                                 float                                       Single     
      6字节浮点数                     Real48                                 --                                             --     
      8字节浮点数                     Double                                 double                                     Double     
      10字节浮点数                   Extnded                               long   double                           --     
      64位货币值                       currency                             --                                             Currency     
      8字节日期/时间               TDateTime                           --                                             Date     
      16字节                               variantVariant,               VARIANT   Variant(注),         Variant(缺省)     
                                                OleVariant,TVarData       OleVariant(注)     
      1字节字符                         Char                                     char                                         --     
      2字节字符                         WideChar                             WCHAR                                       --     
      固定长度字节的字符串   ShortString                       --                                             --     
      动态字符串                       AnsiString                         AnsiString(注)                     String     
      以Null结束的字符串       PChar                                   char*                                       --     
      以Null结束的宽字符串   PWideChar                           LPCWSTR                                   --     
      动态2字节字符串             WideString                         WideString(注)                     --     
      1字节布尔值                     Boolean,ByteBool             (任何1字节数)                       --     
      2字节布尔值                     WordBool                             (任何2字节数)                       Boolean     
      4字节布尔值                     BOOL,LongBool                   BOOL                                         --     
      =======================================================================