編譯器中
❶ C語言中(Vc6.0),int, char,double分別佔多少位元組
C語言中的基本數據類型大小在不同位數的編譯器中有所不同。在16位編譯器中,char佔用1個位元組,short int佔用2個位元組,int佔用2個位元組,unsigned int同樣佔用2個位元組,float佔用4個位元組,double佔用8個位元組,long同樣佔用4個位元組,long long佔用8個位元組,unsigned long佔用4個位元組。
而在32位編譯器中,char的大小保持不變,仍然為1個位元組,char*(指針變數)佔用4個位元組,short int佔用2個位元組,int佔用4個位元組,unsigned int佔用4個位元組,float佔用4個位元組,double佔用8個位元組,long佔用4個位元組,long long佔用8個位元組,unsigned long佔用4個位元組。
到了64位編譯器,char大小依舊保持1個位元組不變,char*(指針變數)則佔用8個位元組,short int佔用2個位元組,int佔用4個位元組,unsigned int佔用4個位元組,float佔用4個位元組,double佔用8個位元組,long佔用8個位元組,long long佔用8個位元組,unsigned long佔用8個位元組。
總結來說,char在所有位數的編譯器中都是1個位元組,short int在16位和32位編譯器中為2個位元組,在64位編譯器中為2個位元組,int在16位編譯器中為2個位元組,在32位和64位編譯器中為4個位元組,unsigned int的大小與int相同,float在所有位數編譯器中為4個位元組,double在所有位數編譯器中為8個位元組,long在16位和32位編譯器中為4個位元組,在64位編譯器中為8個位元組,long long在所有位數編譯器中為8個位元組,unsigned long的大小與long相同。
這種大小的差異主要是因為不同位數的編譯器對內存定址方式的不同。在16位編譯器中,地址空間較小,因此數據類型較小,而在32位和64位編譯器中,地址空間較大,因此數據類型較大。
需要注意的是,這些大小並不是固定的,它們還受到操作系統、編譯器和其他因素的影響。因此,在編寫程序時,需要根據實際情況來確定數據類型的大小。
例如,在某些操作系統中,int的大小可能為4個位元組,而在其他操作系統中,int的大小可能為2個位元組。因此,在編寫跨平台的程序時,需要特別注意數據類型的大小。
此外,還有一種稱為long long int的數據類型,它在64位編譯器中佔用8個位元組,在32位編譯器中也佔用8個位元組,而在16位編譯器中,它可能佔用4個位元組。
綜上所述,C語言中不同數據類型的大小在不同位數的編譯器中有所不同,需要根據實際情況來確定數據類型的大小,以確保程序的正確性和跨平台性。