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

2021-07-04 15:32:54 字數 3128 閱讀 7396

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語言中yx又是什麼意思,C語言中yx是什麼意思

c語言中y x 它的功能就是 y x x 就是上面兩個語句的簡寫形式。c語言中y x是什麼意思 x 先自加後賦值,表示式的值為x加1後的值,x自身加1.比如b 5,a b,那麼a 6,b 6 y x y x 1 x x 1 把x的值先加1,再賦值給y x表示在做後面的運算之前x先做一次加法,所以這裡...

yx1c語言中是什麼意思,C語言中yx是什麼意思

y x 1 x x 1 y x 1 y x 1c 1c是16進製製數 c語言中y x是什麼意思 x 先自加後賦值,表示式的值為x加1後的值,x自身加1.比如b 5,a b,那麼a 6,b 6 y x y x 1 x x 1 把x的值先加1,再賦值給y x表示在做後面的運算之前x先做一次加法,所以這裡...

C語言中的log函式是怎麼意思,C語言中log函式怎麼使用啊

1 c語言中,有兩個log函式,分別為log10和log函式,具體用法如下 2 函式名 log10 功 能 對數函式log,以10為底 用 法 double log10 double x 程式示例 include include int main void 執行結果 3 函式名 log 功 能 對數...