2014年11月29日 星期六

C語言資料型別

各種無符號類型量所占的記憶體空間位元組數與相應的有符號類型量相同。但由於省去了符號位元,故不能表示負數。
有符號整數變數:最大表示32767
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
無符號整數變數:最大表示65535
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1

    

C語言所定義的資料型別如下
        
型別符號位元位元長度表示方法數值範圍
整數16或32int-2147483648 ~ 2147483647
8char-128 ~ 127
16short-32768 ~ 32767
32long-2147483648 ~ 2147483647
64long long
16或32unsigned int0 ~ 4294967295
8unsigned char0 ~ 256
16unsigned short0 ~ 65535
32unsigned long0 ~ 4294967295
64unsigned long long
浮點數32float10^-38~10^38
64double10^-308~10^308
字元8char-128 ~ 127


浮點數(float)變數型別在電腦記憶體中通常都佔用4byte,也就是32bit。存放方式遵循IEEE-754格式標準[1]。此外,任何資料在記憶體中都是以二進制的形式存儲的。
在二進制科學表示法中,浮點數可表示成:S=M*2N,主要由三個部分構成:符號位元+階碼(N)+尾數(M)。對於float型別資料,其二進制有32位元,其中符號位元1個,階碼8個,尾數23個;對於double型別資料,其二進制為64位元,符號位1個,階碼11個,尾數52個。
浮點數float記憶體存放格式 
● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。
double ←── float 高
long
unsigned
int ←── char,short 低
● 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。所有这些转换都是由系统自动进行的, 使用时你只需从中了解结果的类型即可。这些转换可以说是自动的,当然,C语言也提供了以显式的形式强制转换类型的机制。

● 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。

沒有留言:

張貼留言