1樓:匿名使用者
用sizeof()
假設你的變數為a
那就是sizeof(a)
c++中各種變數所佔位元組數
2樓:井鈺
樓主啊,這個不同型別的變數所佔的位元組數與你的機器有關
但是你可以通過sizeof(型別名)來確定他到底在你的機器上所占用
的位元組數,當然型別名不侷限於基本型別,還包括很多自定義型別
如類型別了等等,結構型別了,不過那些稍微複雜一點
還可以sizeof(表示式)//表示的是表示式結構所占用的位元組數
下面給個程式測試,樓主可以到自己電腦上試試:
#include
using namespace std;
int main()
我電腦上的執行結果顯示:
the size of an int is: 4bytes.
the size of a short int is: 2bytes.
the size of a long int is: 4bytes.
the size of a char is: 1bytes.
the size of a float is: 4bytes.
the size of a double is: 8bytes.
the size of a bool is: 1bytes.
3樓:匿名使用者
你可以條用sizeof()函式,它就是c++提供的檢視變數所佔位元組數目的函式,其中只有乙個引數,可以是某個變數名,也可以是某乙個資料型別,例如sizeof(int)和sizeof(a)(當然已經有:int a;)都返回4.
4樓:匿名使用者
不同的系統上,所佔空間是不同的。
可以用sizeof(型別名)來檢查對就型別所占用的位元組數量。
在c++中怎樣定義乙個半位元組變數
5樓:匿名使用者
定義不了半個位元組的變數,不過可在struct裡面定義任意bit的變數
struct a;
怎麼c++裡面的string型別的位元組數
6樓:匿名使用者
不知道你是不是想看string長度 用string.length()函式可以返回字串的長度 乙個字元佔乙個位元組 而且string有乙個字元表示結尾 這個字元不會被length計算 所以length+1就是所佔位元組 sizeof出來的數字是預設開的空間 也就是只要定義乙個string 系統就會為它分配32位元組
7樓:
string型別 -- string 不是變數型別,不叫「型別」
string是「類」,英文 class。
sizeof 是 運算子。不能算 class 佔記憶體的大小。
string類 成員函式 .length(), .size() 才能求它的字串 實際所佔的位元組數。
string類,它同 char 不一樣。char 是變數型別。
c++裡面輸入乙個資料型別,輸出他所占用的位元組數,下面這段有什麼問題,怎麼修改,求大神
8樓:匿名使用者
1.cin 是以流方式處理資料的,因此輸入資料時不能確定型別的;只有先確定型別,cin才會對應格式化;所以這與你的問題是矛盾的。
2.只有將它放入什麼變數,它才會進行相應轉換。上面這樣是輸入,才會轉化成 char 型別,所以你輸出永遠是 1.
9樓:匿名使用者
sizeof操作符是可以用變數的。
不過你的標頭檔案有問題,並要使用std這個namespace來直接使用cin和cout
應該是#include
using namespace std;
10樓:杜曼珠
這樣只能輸出i占用的位元組,要實現輸出某型別名所占用的位元組,應該要判斷輸入的文字,然後輸出sizeof(int)、sizeof(float)等
c++ 獲取乙個帶void指標的結構體變數 總共的位元組數?
11樓:
1. sizeof是一定行的,無論你的引數有多複雜,至於你說的記憶體對齊問題,用#pragma pack(1) 強制資料結構單位元組對齊。
2. 我不明白你說的x1佔多少位元組是什麼意思,如果這是考題,d這個引數就是迷惑人的,有沒有d這個引數,x1占用的記憶體都是sizeof(x),本例中#pragma pack(1) 那麼x1就是9,如果按照系統預設的#pragma pack(4),那麼x1占用的記憶體大小就是12,你的d就算1000萬,也是這麼大。
3. d表示x1->b分配乙個記憶體的大小,和x1沒半點關係,不信你delete x1而不去free(b),看看是不是記憶體洩露。
4. 正確的表述應該是:x1大小為sizeof(x) ; x1->b大小為d ;這兩個記憶體塊是分開的。
ps:#pragma pack(1)
struct x
int a;
void * b;
char c;
};#pragma pack()
12樓:匿名使用者
new的部分沒有通用的辦法,所以要記下來,這裡必須計算d。
其他部分直接sizeof(x), sizeof(x)已經考慮到了記憶體對齊等各種情況。
結果是sizeof(x) + d;
另外, "x1總共占有的位元組數"這句有兩種理解:
1. x1自身占用的位元組數 結果是sizeof(x)2. x1自身+x1初始化時通過new申請的記憶體, 結果是前面所說的sizeof(x) + d
x初始化時申請的記憶體同x一般不在同乙個連續區域,是分開的,至少不能假定是在一起的。
所以傳輸資料時,要分別傳送。
13樓:求知
你要是在網路上傳輸,最好不要這樣用,涉及不同平台記憶體對齊問題,建議用乙個buf 依次壓入。
你可以new buf[d];
memecpy(buf,&xx,len);
把len記錄下拉,然後傳輸buf和len
14樓:匿名使用者
試試_msize(void *p)
c++如何從檔案中讀乙個數字到變數
15樓:__________鄭晟
#include
#include
int main()
int i;
ifstream fin("c:\\test.txt");
if(!fin)
cout<<"cannot open input file.\n";
return 1;
fin>>i;
cout<我捨去了向檔案中寫的**。樓主可以自己建乙個txt檔案,然後自己在裡面寫個數字就行了。(注意檔案的路徑和檔名)
16樓:風若遠去何人留
1 首先,需要知道檔案中儲存的是什麼型別的數字,是實數的話,就需要用double或者float,是整數的話,就需要用int或者short,或者long。
具體選擇哪種型別,取決於實際資料的大小和精度。
2 定義對應型別的變數,如
int value;
3 建立fstream物件開啟檔案:
fstream fs(filename);
4 使用》運算,將數字讀到變數:
fs>>value;
17樓:匿名使用者
c++也可以用c的庫。
如:int shuzi;
file *fp = fopen("1.txt", "r");
if (fp == null)
fscanf(fp, "%ld", &shuzi);
...fclose(fp);
18樓:匿名使用者
是否漏了fin.close();
c++裡怎麼擷取變數的前2個位元組?
19樓:匿名使用者
lpstrfile buffer 根據變數的命名,大概推測這是乙個字串的指標。
假設乙個buffer,前2位元組就是 buffer[0]和buffer[1],
根據你的需要,你可以要字串複製函式strcpy去把 buffer的前2個位置的值取出來,然後將其轉換成int值。 atoi()
20樓:
可以用位運算。。。
比如int現在都是32位的,為4個位元組。
取第乙個位元組可以用
a=a&(0xff000000);
取第二個位元組可以用
a=a&(0x00ff0000);
依此類推。。。
21樓:匿名使用者
int size;
*((short *)&size) size的前兩位元組
c++裡 要使輸出的變數都保留小數點後1位 該怎麼限制
22樓:小肥肥
在輸出前面加上 cout << setiosflags(ios::fixed) << setprecision(1) 就行了,setprecision(1) 就是設定對應的精度,還要加上對應的標頭檔案 #include。
#include
#include
using namespace std;
#include
int main()
double d = 12.5638;
cout << setiosflags(ios::fixed)
<< setprecision(1)
擴充套件資料:
c++的語言基礎
整型整數常量
整數常量是不帶小數的數值,用來表示正負數。例2—2中ox55、0x55ff、1000000都是c++語言的整數常量。
c++語言的整數常量有三種形式:十進位制、八進位制、十六迸制。
(1)十進位制整數是由不以0開頭的0~9的數字組成的資料。
(2)八進位制整數是由以0開頭的0~7的數字組成的資料。
(3)十六進製制整數是由以0x或0x開頭的0~9的數字及a~f的字母(大小寫字母均可)組成的資料。
例如:0,63,83是十進位制數。
00,077,0123是八進位制數。
0x0,ox0,0x53,0x53,0x3f,0x3f是十六進製制數。
整數常量的取值範圍是有限的,它的大小取決於此類整型數的型別,與所使用的進製形式無關。
整型變數型別
整型變數型別有byte,short,int,long四種說明符,它們都是有符號整型變數型別。
(1)byte型別。
byte型別說明乙個帶符號的8位整型變數。由於不同的機器對多位元組資料的儲存方式不同,可能是從低位元組向高位元組儲存,也可能是從高位元組向低位元組儲存。這樣,在分析網路協議或檔案格式時,為了解決不同機器上的位元組儲存順序問題,用byte型別來表示資料是合適的。
(2)short型別。
short型別說明乙個帶符號的16位整型變數。short型別限制了資料的儲存應為先高位元組,後低位元組。
(3)int型別。
int型別說明乙個帶符號的32位整型變數。int型別是一種最豐富、最有效的型別。它最常用於計數、陣列訪問和整數運算。
(4)long型別。
long型別說明乙個帶符號的64位整型變數。對於大型計算,常常會遇到很大的整數,並超出int所表示的範圍,這時要使用long型別。
<< endl;
return 0;
23樓:匿名使用者
// 注意精度的設定不僅僅只針對一次輸出有效,而是針對所有的後續輸出streamsize old = cout.precision();
cout< cout.unsetf(ios_base::fixed); cout.precision(old); // 恢復原先的精度設定 沒錯的啊,在我的機器上執行是17.5 雖說這條int unit price 350l 有點問題,但350l賦值給unit price會自動轉化過來的。我用的是vs.net 2005。看來應該是系統環境有關吧,你去掉l看有沒問題看看。int unit price 350l這裡己錯了.長整數350l和基... 變數是int型的還是char型,是由宣告決定的。函式呼叫時引數型別錯,你編譯時就通不過呀。unsigned char 可以當無符號整型用。 假設函式形式為 int function int n 方法1 判斷實參字長 int function int n 在c語言裡有個函式可以判斷輸入的是不是數字或者... 幸運的創業找我 可刪除的檔案,具體如下 1 首先windows下面的help資料夾裡的內容是可以刪除的,首先進入我的電腦,尋找 windows 資料夾 2 help裡面的這些檔案都是一些系統幫助檔案,可以全部刪除,如下圖所示 5 c windows temp 資料夾中的所有檔案 系統臨時檔案 可以全...有關C語言整型變數的問題知道的請進
在C語言中,怎麼判斷變數是int型的還是char型的
電腦裡面C盤的東西哪些可以刪除,哪些又不可以刪除呢