天天看點

資料類型總結 (C++,C#)

作用 C++ 大小 C# 大小 .NET Framework類型 取值範圍 字尾

字元 char 1 sbyte 1 System.SByte -128~127  

字元(無符号) unsigned char 1 byte 1 System.Byte 0~255  

寬字元 wchar_t 2 char 2 System.Char    

寬字元(無符号) unsigned wchar_t 2          

邏輯值 bool 1 bool 1 System.Boolean true,false  

短整數 short 2 short 2 System.Int16

-32,768 .. 32,767

短整數(無符号) unsigned short 2 ushort 2 System.UInt16 0~65535(2的16次方)  

整數 int 4 int 4 System.Int32

-2,147,483,648 .. 2,147,483,647

整數(無符号) unsigned int 4 uint 4 System.UInt32

0 .. 4,294,967,295

長整型 long 8 long 8 System.Int64

-9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

L (最好用大寫,因為小寫l容易與1混淆)

長整型(無符号) unsigned long 8 ulong 8 System.UInt64

0 .. 18,446,744,073,709,551,615

單精度實數 float 4 float 4 System.Single

-3.402823e38 .. 3.402823e38

雙精度實數 double 8 double 8 System.Double

-1.79769313486232e308 .. 1.79769313486232e308

d

長雙精度實數 long double 10 decimal 16 System.Decimal

-79228162514264337593543950335 .. 79228162514264337593543950335

m

字元串 string   string   System.String    

對象     object   System.Object    

有些朋友會問到,那麼日期呢?DataTime不是基礎類型,而是一個特殊的類(C++),或者說是一個結構體(C#),和其他類或者結構一樣。他也沒有預定義的大小,

定義類型别名

C++中,使用typedef關鍵字 : typedef short Age; C#中,使用using關鍵字 : using Age = System.Int16;

題外話: 下面還有一個SQL Server資料類型與C#類型的比較。我就不整理了,直接摘錄自網絡

SQL Server 2000

C#

CodeSmith

資料類型

取值範圍

空值代替值

bigint

-2^63 (-9,223,372,036,854,775,807) 至 2^63-1 (9,223,372,036,854,775,807)

Int64

-9,223,372,036,854,775,808;即十六進制的 0x8000000000000000至9,223,372,036,854,775,807;即十六進制的 0x7FFFFFFFFFFFFFFF

Int64.MinValue

binary

固定長度的 n 個位元組二進制資料。N 必須從 1 到 8,000。存儲空間大小為 n+4 位元組。

Byte[]

null

Binary

bit

True,False

enum

0,1,-1(使用一個枚舉變量來代替)

public enum bitNull  

{

    False,

    True,

    Null = -1

};

-1

Boolean

char

長度為 n 個位元組的固定長度且非 Unicode 的字元資料。n 必須是一個介于 1 和 8,000 之間的數值。存儲大小為 n 個位元組。

string

AnsiStringFixedLength

datetime

存儲從 1753 年 1 月 1 日至 9999 年 12 月 31 日的日期(每個數值要求8 個位元組的存儲空間)

DateTime

0001 年 1 月 1 日 00:00:00 .0000000至9999 年 12 月 31 日 23:59:59.9999999

1753-01-01 0:00:00

decimal

從 - 10^38 +1 到 10^38 - 1

Decimal

-79,228,162,514,264,337,593,543,950,335至79,228,162,514,264,337,593,543,950,335

Decimal.MinValue

float

從 - 1.79E + 308 到 1.79E + 308 之間的浮點數字資料

Double

-1.79769313486232e308至+1.79769313486232e308

Double.MinValue

image

可變長度二進制資料介于 0 與 231-1 (2,147,483,647) 位元組之間。

int

從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型資料(所有數字)

-2,147,483,648 到 2,147,483,647

-2147483648

Int32

money

貨币資料值介于 -2^63 (-922,337,203,685,477.5808) 與 2^63 - 1 (+922,337,203,685,477.5807) 之間,精确到貨币機關的千分之十。存儲大小為 8 個位元組。

Single

-3.402823e38至+3.402823e38

Single.MinValue

Currency

nchar

至多為 4000 個 Unicode 字元

StringFixedLength

ntext

可變長度 Unicode 資料的最大長度為230 - 1 (1,073,741,823) 個字元。存儲大小是所輸入字元個數的兩倍(以位元組為機關)。

String

numeric

使用最大精度時,有效值從 - 10^38 +1 到 10^38 – 1

nvarchar

包含 n 個字元的可變長度 Unicode 字元資料。n 的值必須介于 1 與 4,000 之間。

real

從 ?3.40E + 38 到 3.40E + 38 之間的浮點數字資料。存儲大小為 4 位元組。

smalldatetime

從 1900 年 1 月 1 日至 2079 年 6 月 6 日的日期(每個數值要求 4 個位元組的存儲空間)。

1900-01-01 0:00:00

smallint

從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整型資料。存儲大小為 2個位元組。

Int16

-32768至32767

Int16.MinValue

smallmoney

貨币資料值介于 -214,748.3648 與 +214.748,3647 之間,精确到貨币機關的千分之十。存儲大小為 4 個位元組。

sql_variant

在SQL Server 2000中不支援大資料類型text, ntext, image, timestamp,其他類型均支援

Object

text

伺服器代碼頁中的可變長度非 Unicode 資料的最大長度為 231-1 (2,147,483,647) 個字元。當伺服器代碼頁使用雙位元組字元時,存儲量仍是 2,147,483,647 位元組。存儲大小可能小于 2,147,483,647 位元組(取決于字元串)。

AnsiString

timestamp

timestamp 這種資料類型表現自動生成的二進制數,確定這些數在資料庫中是唯一的。timestamp 一般用作給表行加版本戳的機制。存儲大小為 8位元組。

tinyint

從 0 到 255 的整型資料。存儲大小為1 位元組。

Byte

0至255

Byte.MinValue

uniqueidentifier

存儲 16 位元組的二進制值,該值的使用與全局唯一辨別符 (GUID) 一樣。GUID 是一個唯一的二進制數字;世界上的任何兩台計算機都不會生成重複的 GUID 值。GUID 主要用于在擁有多個節點、多台計算機的網絡中,配置設定必須具有唯一性的辨別符。

Guid

Guid.Empty

varbinary

n 個位元組變長二進制資料。n 必須從 1到 8,000。存儲空間大小為實際輸入資料長度 +4 個位元組,而不是 n 個位元組。輸入的資料長度可能為 0 位元組。

varchar

長度為 n 個位元組的可變長度且非 Unicode 的字元資料。n 必須是一個介于 1 和 8,000 之間的數值。存儲大小為輸入資料的位元組的實際長度,而不是 n個位元組。所輸入的資料字元長度可以為零。