c++資料型別大小
1樓:網友
這個要看ansi/iso標準,肢運李c,c++都遵從這些標準,而不是ieee的標準,在ansi/iso標準中悄搜並沒有規定long double為多少位元組,在vc中, long double等同double,也就是8位元組,在c++ builder中為10位元組,在gcc中為12字歷遲節。
因此long double並不常用。
乙個c++程式 輸出資料型別長度
2樓:網友
上面大魔導師的說法不對,用這個例子就可以知道:
#include
#include
void main()
y; cout《說法,應該是28才對……
目前找到的最好的解釋為:
1) 結構體變數的首位址能夠被其最寬基本型別成員的大小所整除;
2) 結構體每個成員相對於結構體首位址的偏移量(offset)都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充位元組(internal adding);
3) 結構體的總大小為結構體最寬基本型別成員大小的整數倍,如有需要編譯器會在最末乙個成員之後加上填充位元組(trailing padding)。
在你的例子中:
第乙個double型佔了8個位元組,接下來的char b的偏移量是8,可以被sizeof(char)整除,因此它佔用乙個位元組,char c偏移量是9,也佔乙個位元組,int d偏移量是10,不是sizeof(int)=4的整數倍,要將其放到偏移量為12的位置,因此編譯器在char c後填充了2個位元組,使偏移量為12,int d佔4位元組,接下來的short e的偏移量為16,滿足條件(2),short e佔用2個位元組,一共佔用了18個位元組,根據(3),編譯器在short e後填充6個位元組得到24位元組;
在我舉的例子中,接下來再加1到3個short型別變數仍然為24個位元組,但是如果新增4個short型別變數,則變為32個位元組了。
更詳細的全套說明在。
3樓:網友
double 8
char 1
char 1
int 4short 2
相加為源16
因為結構體會按4位元組。
對齊,所以每個變數至少佔4位元組。
所以double佔8位元組。
int和short各佔4位元組。
兩個char 各佔4位元組。
一共24位元組。
4樓:璩桂花東錦
資料型別範圍以bai
巨集定義的形式儲du存在這個標頭檔案中dao
c/c++ 資料型別有大小嗎?它佔儲存空間嗎?
5樓:網友
資料型別的大小,指的就是佔用記憶體空間的大小;
c/c++的基本資料型別,根據在不同的平臺佔用的記憶體空間也隨之變化;
通常情況下:char 1個位元組(固定) int 4個位元組(某些平臺2個位元組,通常16位平臺)
short int 2個位元組(某些平臺4個位元組) long int 4個位元組(某些平臺8位元組)
複合資料型別,比如陣列(根據陣列型別判斷佔用記憶體多少) 比如結構體與類(根據成員型別判斷其大小,但是與其排序也有關,即位元組對齊);
c/c++ 資料型別有大小嗎
6樓:物理公司的
資料型別的大小,指的就是佔用記憶體空間的大小;
c/c++的基本資料型別,根據在不同的配衫平臺佔用的記憶體空間也隨之變化;
通常情況下:char 1個位元組(固定) int 4個位元組(某些平臺2個位元組,通常16位平臺)
short int 2個位元組(某些平臺4個位元組) long int 4個位元組(某些平臺8位元組)
複合資料型別,比如陣列(根據陣列型別判斷佔用記憶體多少) 比如結構體與類(根據成員型別坦銀判斷其大小,但是與其排序也有關,即位元組培信腔對齊);
c++中每個資料型別各能存多大的數字?
7樓:網友
和作業系統,編譯系統都有關,最好查閱編譯器的文件。
還有乙個比較保險的方法是使用標準標頭檔案 (climits),再結合 sizeof。
比如:#include
#include
int main()
msdn只是關於ms的產品的,適用性不廣。
8樓:網友
系統不同不一樣的。查msdn吧,最權威的。
c++編寫乙個程式,輸出基本資料型別長度
9樓:網友
資料型別範圍以巨集定義的形式儲存在這個標頭檔案中#include
#include
using namespace std;
int main(){
cout<<"當前環境下的資料型別範圍";
cout<<"char :"<
float,double 沒有他們的巨集定義範圍。
在c++中就有哪些資料型別?佔多大記憶體?舉例…
10樓:測繪二哈
c++的基本資料型別。
型別名 長度(位元組) 取值範圍。
bool 1 false,true
char(signed char) 1 -128~127
unsigned char 1 0~255
short(signed short) 2 -32768~32767
unsigned short 2 0~65535
int(signed int) 4 -2147483648~2147483647
unsigned int 4 0~4294967295
long(signed long) 4 -2147483648~2147483647
unsigned long 4 0~4294967295
float 4 絕對值精度)
double 8 絕對值精度)
long double 8 絕對值精度)
由上面可以知道,c++的資料型別有bool(布林型)、char(字元型)、int(整型)、float(浮點型,表示實數)、double(雙精度浮點型,簡稱雙精度型)。
關鍵字unsigned和signed分別表示無符號和有符號。
11樓:
這個根據編譯器有不同,visual c++裡面:
unsigned int/int 4
unsigned short/short int 2long/unsigned long 4
char/unsigned char 1
flaot 4
double/unsigned double 8
c++中當所需要的資料長度超過了資料型別的長度怎麼辦
12樓:網友
c++ 的長整型 unsigned long long 應該能夠滿足你的要求。一般的機器sizeof(long)的值是4,sizeof(unsigned long long)的值是8
最大值18 446 744 073 709 551 616 = 2的64 次方。
13樓:節子不哭
用字串表示位數過多的資料,不是有大數相加這個經典的演算法嗎,就是這樣解決的,學習一下用大數相加來解決問題。
C語言不同資料型別怎麼轉換成同一資料型別的
大概有三種bai 情況 1.表示式du中有幾種可計算zhi 型別時,自動向dao 高 看齊,即自動把位數回少的型別通答過填加無效0而達到表示式中位數最多的型別,計算結果也是 高 型別。這種轉換不需程式設計師干預,也不損失資料。2.通過賦值自動轉換,即自動將右邊表示式計算結果的型別轉換為表示式左邊變數...
資料庫與C的資料型別轉換,C 與資料庫型別之間的轉換知多少
應該不存在這種事情 在資料庫裡表示字串型別用的就是 varchar,nvarchar,char nchar等等 而c 裡沒有這種型別,與他向替代的是string型別,如果出錯了,應該不會在這邊,你好好檢查一下其他型別呢 怎麼不匹配,我用過可以匹配的啊,具體東西帖出來看看 是不是有一種方式是 變數名....
C語言中基本資料型別包括哪些
c 語言的基本資料型別有如下四種 整型,說明符為int 字元型,說明符為char 浮點型 又稱實型 說明符為float 單精度 double 雙精度 空值型,說明符為void,用於函式和指標。為了滿足各種情況的需要,除了void型外,上述的三種型別前面還可以加上修飾符改變原來的含義。signed 表...