1. 程式人生 > >C語言基礎---int、float、short、double等(佔位元組)

C語言基礎---int、float、short、double等(佔位元組)

#include "iostream"
using namespace std;
int main()
{
    cout<<sizeof(char)<<endl;
    cout<<sizeof(short)<<endl;
    cout<<sizeof(int)<<endl;
    cout<<sizeof(float)<<endl;
    cout<<sizeof(long)<<endl;
    cout<<sizeof(double)<<endl;
    return 0;
}
結果為:
1
2
4
4
4
8
通過測試,在32位系統的vc編譯器中:
short: 2 位元組,
int 、float、long: 4 位元組,
double:8 位元組

1、關於int 和 long int
(1)在VC下沒有區別。兩種型別均用4個位元組存放資料。
(2)VC是後出的編譯器,之前有很多早期的C編譯器,在早期編譯器下long int佔4個位元組,int佔2個位元組。
(3)之所以有“整型”和“長整形”兩種不同型別,是C語言在誕生時發明者規定好的,前者儲存的整數的值域小於後者
(4)在標準中,並沒有規定long一定要比int長,也沒有規定short要比int短。
描述如下:長整型至少和整型一樣長,整型至少和短整型一樣長。
這個的規則同樣適用於浮點型long double至少和double一樣長,double至少和float一樣長。
至於如何實現要看編譯器廠商
(5)short<=int<=long
VC裡面還有個
long long 是佔8個位元組的

2、關於long long
(1)long long在win32中是確實存在,長度為8個位元組;定義為LONG64。
為什麼會出現long int呢,在win32現在系統中,長度為4;在歷史上,或者其他某些系統中,int長度為2,是short int。
即便是long long,在TI的有款平臺中,長度為5
也就是說,每種型別長度,需要sizeof才知道,如果可能,最好用union看看裡面的資料,可以消除一些型別的假象長度。  
(2)visual c++ 6.0中不支援,long long int,是在vc99中新增此功能的,所以我們在vc6.0中編譯有long long 的資料時,會出錯,但是在VS更高的版本中,是能通過的
ACM題目中“求矩形的個數”那道題,就需要用到long long