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語言中strlen與sizeof有什麼區別

strlen 是返回所定義字串的長度,而sizeof是用來取得變數或型別所占用的記憶體空間大小的。 strlen 是返回字串的長度。而sizeof,卻是用來取得變數或型別所占用的記憶體大小的。這個a陣列的字串長度為4 末尾的 0是不計入字串長度的 但a是10個單位的char型,它占用的記憶體空間是1...

c語言中sizeof 和strlen 用法上有什麼區別呢

延霞月 兩者都是返回位元組數,具體講前者返回的是位元組數,而後者返回的是字元數 其次,sizeof返回的數量包括最後的結束符 0 而strlen則沒有。 sizeof是操作符,不是函式。它後面的 並不是必須的,沒有歧意時就不必寫上了。sizeof操作符計算的是系統為它後面的變數或型別名分配的空間大小...

在c 語言中n 什麼意思,c 語言中 n 的意思是什麼

雖然過去了很久,但是還是說一下,以後的人搜也會看到。n n n 1 n 2 2 1.例如5!5 4 3 2 1 付費內容限時免費檢視 回答親,您好。這邊正在為您整理最精準的答案,請稍等片刻。親,您好。n 10 是得到n除以10以後的餘數n 10 相當於n n 10,是得到n除以10的商的整數部分舉個...