再舉個例子:
#include
<
iostream
>
using namespace
std;
int
main()
為什麼a結果不是2呢?
sizeof本身是c/c++的乙個關鍵字(和int、char一樣)而不是乙個函式,這注定它是在編譯期所執行的,而在編譯期a=b是不會被執行的
同時sizeof的作用是求某個型別所占用記憶體空間的位元組數,也就是應該是sizeof(型別名)。你可能會說了,也可以sizeof
(2)呀,也可以像上面的程式那樣sizeof(a
= b)呀!是的,這是可以的,這是因為在編譯期,編譯器計算出了sizeof後面跟的表示式的型別,然後sizeof計算出該型別所占用記憶體空間的位元組數。
好了,回到我們的主題,sizeof(a
= b)中的a =
b為什麼沒有執行呢?這是因為賦值表示式的型別同其左值的型別,在這裡也就是變數a的型別。因此編譯器根本不會去執行a =
b這個操作,而只是把sizeof(a
= b)看成sizeof(a
),在這裡a又是int型別的,那麼就成了sizeof
(int)了。
關於c 中的sizeof
再舉個例子 include iostream using namespace std int main 為什麼a結果不是2呢?sizeof本身是c c 的乙個關鍵字 和int char一樣 而不是乙個函式,這注定它是在編譯期所執行的,而在編譯期a b是不會被執行的 同時sizeof的作用是求某個型別...
C語言關於sizeof總結
一 sizeof用來計算乙個變數,或者資料型別的長度,以位元組為單位。它是乙個操作符,如同 一樣,單運算元。比如在我的電腦上,sizeof int 4,sizeof long 4。還有一般要求的sizeof char 1。二 sizeof在陣列與指標上的特性 c語言中的指標使其具備了強大的功能,同時...
c 中sizeof的用法
1 作用 sizeof計算資料 包括陣列 變數 型別 結構體等 所佔記憶體空間,用位元組數表示。2 sizeof有三種用法形式,sizeof操作符,對變數或物件可以不加括號,但若是型別,須加括號 如下 1 sizeof object 物件 2 sizeof type name 型別 3 sizeof...