国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
基本數(shù)據(jù)類型
                                        基本數(shù)據(jù)類型
C語(yǔ)言中只有4中基本數(shù)據(jù)類型——整型、浮點(diǎn)型、指針和聚合類型(如數(shù)組和結(jié)構(gòu)等);所有其他類型都是從這4種基本類型的某種變化或組合派生而來(lái)。
一、整型家族
整型家族包括char、short int、int和long int,并且都分為signed和unsigned型。
int型字長(zhǎng)問(wèn)題:
long int型至少應(yīng)該和int型一樣長(zhǎng),而int型至少應(yīng)該和short int一樣長(zhǎng)。
①     C/C++規(guī)定int字長(zhǎng)和機(jī)器字長(zhǎng)相同;
② 操作系統(tǒng)字長(zhǎng)和機(jī)器字長(zhǎng)未必一致;
③ 編譯器根據(jù)操作系統(tǒng)字長(zhǎng)來(lái)定義int字長(zhǎng);
由上面三點(diǎn)可知,在一些沒(méi)有操作系統(tǒng)的嵌入式計(jì)算機(jī)系統(tǒng)上,int的長(zhǎng)度與處理器字長(zhǎng)一致;有操作系統(tǒng)時(shí),操作系統(tǒng)的字長(zhǎng)與處理器的字長(zhǎng)不一定一致,此時(shí)編譯器根據(jù)操作系統(tǒng)的字長(zhǎng)來(lái)定義int字長(zhǎng):“比如你在64位機(jī)器上運(yùn)行DOS16系統(tǒng),那么所有for dos16的C/C++編譯器中int都是16位的;在64位機(jī)器上運(yùn)行win32系統(tǒng),那么所有for win32的C/C++編譯器中int都是32位的”。(CPU的“字長(zhǎng)”是指其一條指令/一次運(yùn)算可以處理的數(shù)據(jù)的最大寬度。http://www.cublog.cn/u/23458/showart.php?id=175995
另外,對(duì)于整型的數(shù)值范圍,每個(gè)編譯器里面都有一個(gè)標(biāo)準(zhǔn)頭文件:limits.h,這個(gè)頭文件定義了一些宏,這些宏表示該編譯器使用的所有數(shù)據(jù)類型的范圍,編程過(guò)程中 使用這些宏就行了。例如你想要的int的最大值可以使用宏INT_MAX,最小值使用INT_MIN,而無(wú)符號(hào)則可以使用UINT_MAX,還有其它類型 的。你自己把這個(gè)頭文件打開(kāi)看看就知道了。
 
附:關(guān)于“整形變量為32位”的問(wèn)題的剖析:
整形變量是不是32位這個(gè)問(wèn)題不僅與具體的CPU架構(gòu)有關(guān),而且 與編譯器有關(guān)。在嵌入式系統(tǒng)的編程中,一般整數(shù)的位數(shù)等于CPU字長(zhǎng),常用的嵌入式CPU芯片的字長(zhǎng)為8、16、32,因而整形變量的長(zhǎng)度可能是8、 16、32。在未來(lái)64位平臺(tái)下,整形變量的長(zhǎng)度可達(dá)到64位。
長(zhǎng)整形變量的長(zhǎng)度一般為CPU字長(zhǎng)的2倍。
在數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)中,優(yōu)秀的程序員并不會(huì)這樣定義數(shù)據(jù)結(jié)構(gòu)(假設(shè)為WIN32平臺(tái)):
typedef struct tagTypeExample
{
unsigned short x;
unsigned int y;
}TypeExample;
他們這樣定義:
#define unsigned short UINT16 //16位無(wú)符號(hào)整數(shù)
#define unsigned int UINT32 //32位無(wú)符號(hào)整數(shù)
typedef struct tagTypeExample
{
UINT16 x;
UINT32 y;
}TypeExample;
這樣定義的數(shù)據(jù)結(jié)構(gòu)非常具有通用性,如果上述32平臺(tái)上的數(shù)據(jù)發(fā)送到16位平臺(tái)上接收,在16位平臺(tái)上僅僅需要修改UINT16、UINT32的定義:
#define unsigned int UINT16 //16位無(wú)符號(hào)整數(shù)
#define unsigned long UINT32 //32位無(wú)符號(hào)整數(shù)
幾乎所有的優(yōu)秀軟件設(shè)計(jì)文檔都是這樣定義數(shù)據(jù)結(jié)構(gòu)的。
 
char型與程序可移植性:
char類型變量在本質(zhì)上是小整型值。
字符型(char型)也分signed char和unsigned char型,如果在定義變量時(shí)只使用關(guān)鍵字char,缺省情況下它根據(jù)編譯器的定義為signed char或unsigned char,這意味著不同機(jī)器上的char可能有不同的取值范圍。因此,只有當(dāng)程序使用的char型變量的值位于signed char和unsigned char的交集中(例如編譯器認(rèn)為char為8位二進(jìn)制長(zhǎng)時(shí),這個(gè)交集是0~127,ASCⅡ字符集的字符都在這個(gè)范圍內(nèi)),這個(gè)程序才是可移植的。
進(jìn)一步,如果顯示地將字符變量聲明為signed或unsigned,則可提高程序的可移植性,不過(guò),有些機(jī)器處理signed char和unsigned char的能力是不同的,硬性規(guī)定后可能會(huì)使效率受損,還有不少處理字符的庫(kù)函數(shù)的參數(shù)聲明為char,因此顯示聲明也可能會(huì)有兼容性問(wèn)題。
結(jié)論:保證可移植性的最佳辦法還是定義為char型同時(shí)只使用signed char和unsigned char型的交集字符,在進(jìn)行算術(shù)運(yùn)算時(shí),可根據(jù)需要再使用顯示地聲明或者強(qiáng)制轉(zhuǎn)換。
 
本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/s04023083/archive/2010/01/12/5182700.aspx
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Keil MDK編譯器的數(shù)據(jù)類型定義
數(shù)組元素型指針和數(shù)組變量
C語(yǔ)言的2016
字節(jié)對(duì)齊詳解
C/C++深層探索(十五)
不得不說(shuō),關(guān)于 *(unsigned long *) 和 (unsigned long)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服