c語言中sizeof的意思是什麼下面這道題的答案是什麼,請解

時間 2021-07-04 15:32:42

1樓:高金山

上面這麼多朋友都在亂說,不怕誤導別人啊?

vc環境下的答案是124(tc環境下是64,因為int在vc下佔4位元組,而在tc下佔2位元組)

sizeof(struct date)=12(year,month和day每個佔4位元組,所以結構體today佔用3×4=12位元組)

sizeof(m)=4(a佔4位元組,b佔4位元組,c佔1位元組,所以聯合m是它們最大成員佔用的位元組數,即4位元組)

2樓:匿名使用者

16 4

struct如果超過8,就必須是8的倍數,而且要按8對齊。這裡int year month加起來是8,剩下一個day由於要對其,也給他安排8位元組記憶體,所以是16

union是共用記憶體,取佔位元組數最多的為準,這裡long佔4個,所以4個

3樓:薩抒

反正sizoef作用就是計算資料型別在記憶體中的分配大小.

上面程式段的意思就是:

先定義一個結構體data,再定義一個聯合體m.

"printf("%d%d\n",sizeof(struct date),sizeof(m));"就是輸出結構體data和聯合體m分別所佔記憶體長度.

答案高金山同志已經給出.即

sizeof(struct date)=12;(結構體data是每一個資料型別所佔位元組數總和)

sizeof(m)=4.(聯合m是它們最大成員佔用的位元組數,)其輸出結果為:124

4樓:匿名使用者

上面已經講得很清楚了,我也來講句廢話,簡單地來說,sizeof()就是返回括號中變數或資料型別在記憶體中所佔的位元組數。如:sizeof(int)則返回4;sizeof(x)則返回8,這裡假設x是double型。

(在vc6.0環境下)

5樓:匿名使用者

sizeof是指這個資料型別分配的單元記憶體大小,比如int 是4,等等,所以sizeof(struct date)=4+4+4=12, union型別比較特殊,它的長度大小時內部成員中最大的一個的長度,所以sizeof(m)是其中long的值,也就是8

6樓:

取長度的

輸出是16和8

c語言中,sizeof運算子有什麼作用?

7樓:哇哎西西

sizeof運算子

該運算子在編譯階段就已經起作用了。它以位元組為單位返回其運算元的大小。它的運算元可以是資料物件也可以是一個型別。如果是型別那麼運算元需要用圓括號括起來。

如:sizeof(int)=4;

擴充套件資料:

c語言其他運算子:

1、取模運算子%

該運算子有個特性就是隻支援整數運算。它的作用就是用左邊的運算元除以右邊的運算元得到的餘數。它對浮點數其他型別不起作用。

如:11%2=1因為11除以2得5餘1

2、自增自減運算子++/--

這種運算子的基本作用就是讓其運算元增加1或者減去1。這種運算子有兩種模式:字首模式和字尾模式。

字首模式:運算子放在運算元的前面,在表示式中求值時先將運算元進行加1或者減1操作然後再參與運算。

字尾模式:運算子放在運算元的後面,在表示式中求值時先將運算元參與運算然後再對運算元進行加1或者減1操作。

3、三目運算子?:

顧名思義就是三個運算元的運算子,它的用法時當問號前面的表示式的值為真時,取值為冒號前面的數值,否則取值為冒號後面的數值。由於它的執行效率較高,常被我們用來代替條件語句。

如:x>1?2:3;這句話的意思就是當x的值大於1時,整個表示式的值為2,否則為3。

8樓:匿名使用者

通常用來計算一個變數或者型別的大小的,單位是位元組

譬如sizeof(char)==1, sizeof(int *)==4 這些是計算的型別的大小,char是一個位元組,int*是4個位元組(其實32位系統下指標都是4個位元組,譬如char*,void*等等)

另外譬如char a;那麼sizeof(a)==1

int b;那麼sizeof(b)==4(這個跟編譯器有關,有些是2)

另外在計算結構和類的大小的時候,也可以用sizeof來計算該類或者結構所佔的位元組.只是計算方法根據編譯器不同而有些不同,但基本的演算法都一樣,譬如char是1個位元組,int*是4個位元組,double是8個位元組,double*是4個位元組這樣子.有些編譯器會進行對齊處理,有些不會.

但是這個一般沒有太大的意義.

在應用方面,譬如

1.計算陣列元素個數

int a=;

sizeof(a)/sizeof(a[0])就是陣列a的大小除以單個元素的大小,那麼結果就是陣列a的元素個數,這樣比自己數來的方便,尤其是數量比較多的時候.在對陣列進行遍歷操作時,譬如for(int i=0;i

這樣就不容易出錯,不然很可能會出現少1或者多1的失誤

2.動態申請記憶體(用malloc,calloc,realloc的時候)

譬如要申請一段記憶體存放30個double型別數

那麼可以用(double*)malloc(sizeof(double)*30)也就是申請8*30個位元組的空間,並且把首地址返回給某個double*型別的變數

3.有些函式的引數需要位元組數的時候

9樓:匿名使用者

比如說你

int a;

short b[40];

printf ("%d\n", sizeof(int));

printf ("%d\n", sizeof(a));

printf ("%d\n", sizeof(b));

用vc執行的話,螢幕會顯示:44

80為什麼?

第一行,在vc中int型別佔4個位元組,sizeof返回int型別所佔位元組數

第二行,a佔了4個位元組,因為a是int型

第三行,b是短整型陣列,佔了2*40=80位元組sizeof,顧名思義,看所佔用的儲存空間的

10樓:匿名使用者

上面說的對..不過不是字元,是位元組

sizeof取回你當前計算的"量"所佔用記憶體的長度~~

比如說int一般佔用4個位元組..而無論你的數字多大..主要不溢位..就是4

c語言中sizeof是什麼意思,C語言中sizeof是什麼意思

肥仙女 sizeof是c語言中保留關鍵字,也可以認為是一種運算子,單目運算子。常見的使用方式 int a 10 int arr 1,2,3 char str hello int len a sizeof a int len arr sizeof arr 結果是 len a 4,len arr 12,...

在c語言中是什麼意思,C語言中的符號 和 是什麼意思?

柯嘉運郯皓 在c語言裡有兩種意思,一種是取地址符,這種情況是單目運算子,另一種是位運算子,表示按位與,這種情況是雙目運算子。擴充套件資料 c語言運算子介紹 c語言的運算子主要用於構成表示式,同一個符號在不同的表示式中,其作用並不一致。下面按計算的優先順序,分別說明不同作用的表示式。需要特別指出,在c...

c語言中的mn」是什麼意思,C語言中n 1是什麼意思

鏡之海 關於自增自減運算,很多書籍沒有把問題講清楚,在c語言裡是這樣的 1.後置運算 k 表示先運算,後自加。意思是遇到k 了,我先把當前的k的值拿來參加運算,後面再去管它的自加。那麼,後面 後到什麼程度呢?要後到當前的語句執行完,即遇到分號 表示 語句執行完了,所以k才自加1。如 int k 5,...