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語言中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先做一次加法,所以這裡... 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先做一次加法,所以這裡... 1 c語言中,有兩個log函式,分別為log10和log函式,具體用法如下 2 函式名 log10 功 能 對數函式log,以10為底 用 法 double log10 double x 程式示例 include include int main void 執行結果 3 函式名 log 功 能 對數...c語言中yx又是什麼意思,C語言中yx是什麼意思
yx1c語言中是什麼意思,C語言中yx是什麼意思
C語言中的log函式是怎麼意思,C語言中log函式怎麼使用啊