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中有,最好有例子,直接把区别体现出来谢谢!
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中有,最好有例子,直接把区别体现出来谢谢!
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
下面的数据你可以自己按照字节大小去对照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()功能类似,直接去除小数部分,不过它返回的是个整数
double deg;
int aa;
aa = (int)(deg/180 * 1024);deg := deg/180*1024;
aa := Trunc(Deg);那这两段是完全等价的吗?
或者我应该怎么改,才是完全等价的
C中的double是8字节,Delphi中的也是8字节C里的是1.7E-308到1.7E308
Delphi 里的Double是5.0E-324到1.7E308
float m_n;
BCIN=(short int)m_n;转成Delphi代码应该怎么写呢?
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 --
=======================================================================