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 肥仙女 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語言裡是這樣的 1.後置運算 k 表示先運算,後自加。意思是遇到k 了,我先把當前的k的值拿來參加運算,後面再去管它的自加。那麼,後面 後到什麼程度呢?要後到當前的語句執行完,即遇到分號 表示 語句執行完了,所以k才自加1。如 int k 5,...c語言中sizeof是什麼意思,C語言中sizeof是什麼意思
在c語言中是什麼意思,C語言中的符號 和 是什麼意思?
c語言中的mn」是什麼意思,C語言中n 1是什麼意思