C ++数据类型与C#数据类型

时间:2012-05-07 03:32:03

标签: c# c++ types

作为一名学习C ++的专业C#程序员,我想保持数据类型与C#相同。我写了一个头文件,应该有帮助。我想知道的是它是否正确。

// boolean
//#DEFINE bool char
//#DEFINE true 0x01
//#DEFINE false 0x00

// 8-bit integers
#DEFINE byte unsigned char
#DEFINE UInt8 unsigned char
#DEFINE Byte unsigned char
#DEFINE sbyte char
#DEFINE Int8 char
#DEFINE SByte char

// 16-bit integers
#DEFINE ushort unsigned short int
#DEFINE UInt16 unsigned short int
#DEFINE short short int
#DEFINE Int16 short int

// 32-bit integers
#DEFINE uint unsigned int
#DEFINE UInt32 unsigned int
//#DEFINE int int
#DEFINE Int32 int

// 64-bit integers
#DEFINE long long long
#DEFINE Int64 long long
#DEFINE ulong unsigned long long
#DEFINE UInt64 unsigned long long

// 32-bit floating point
//#DEFINE float float
#DEFINE Single float

// 64-bit floating point
//#DEFINE double double
#DEFINE Double double

2 个答案:

答案 0 :(得分:10)

C ++中的内置类型具有实现定义的大小,而C#没有。如果您想要等效行为,请使用<cstdint>中的typedef。不仅是字节,还有位数!另外,char可能是signed,也可能不是signed char - 而是使用{{1}}。

虽然你在做什么听起来像是一个糟糕的主意。只是学习C ++,而不是一些愚蠢的混合语言。

答案 1 :(得分:6)

除了可怕的风格,这些宏甚至没有按照你期望的方式工作。

#define long long long

容易出现各种各样的问题。

http://ideone.com/Jg9DK

颠倒宏定义的顺序并不能完全解决问题。

http://ideone.com/45wUS

出现类似问题
#define short short int

http://ideone.com/dERGm