(1)型別轉換的問題
#include
#define num (sizeof(arr) / sizeof(arr[0]))
int arr = ;
int main()
return 0;
} 輸出的結果是空的!
解釋:我們要知道的是:sizeof 返回的是乙個unsinged int的值!那麼在for迴圈的時候,i = -1就會向後面轉型,將其值轉化為sizeof的值,那麼我們很清楚,-1轉化的sizeof的值是很大的乙個正整數!那麼很顯然就直接不符合i <= ( num - 2 )的條件了,所以就不會輸出!!!
(2)sizeof是操作符
#include
int main()
結果是
i : 10
sizeof(i++) is: 4
i : 10
為什麼第三個還是輸出10呢?!
解釋:解決這個問題就是要理解編譯器編譯原理。 我們要知道sizeof僅僅是乙個操作符而已並不是函式,sizeof要做的僅僅是獲得i++的位元組數,那麼所以在編譯的時候就直接用4代替了i++了,反正編譯器知道結果都是一樣,所以最終i++並沒有執行!
c語言中的sizeof
一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...
C語言中的sizeof
一 sizeof是編譯器的內建指示符 不是函式 sizeof用於計算型別或變數所佔的記憶體大小 sizeof的值在編譯期就已經確定 sizeof用於型別 sizeof type sizeof用於變數 sizeof var 或 sizeof var int var 0 printf d n sizeo...
c語言中的sizeof
首先,sizeof是c語言的一種單目操作符,以位元組的形式給出了其運算元的儲存大小,其返回值為size t,在64位機器下被定義為long unsigned int。sizeof測的大小,在不同的機器上可能不一樣,sizeof不能傳函式。1.基本資料型別 include include intmai...