1 C語言中的 sizeof 問題

2022-08-16 10:21:14 字數 672 閱讀 5522

(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...