Sizeof取的長度小於負數?

char array[10]="ABCDEFG";
int len=sizeof(array);
int num=-1;
if(len<num)
cout<<"Ture";


一般認爲sizeof取長會是一個正整數,但是和一個負數比較,運行結果是“Ture”。why?

因爲sizeof的返回值是size_t型,同於unsigned int。

當與一個signed int 做比較的同時,signed int會做隱式的類型轉換,

也就是說上面的num在比較的同時變成了一個比較大的unsigned int,所以纔會爲真。

爲什麼會變成一個較大的數? 是因爲把二進制表示的符號位當作最高位了。

發佈了34 篇原創文章 · 獲贊 25 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章